【求助】求这条SQL语句怎么写

helloZy_90 2011-06-28 11:21:37
表里面有三个字段,分别是 name (varchar2) ,startTime(Date),endTime(Date),分别表示的是“组织者名称”,“开始时间”,“结束时间”。表里面有很多数据。

现在传入这3个参数,要判断新传入的“开始时间”和“结束时间”这个时间段跟以前的时间段有没有时间重叠的地方,如果有,把对应的“组织者”找出来,跟新传入的组织者对比,判断是否是同一个人。
实际上就是判断在同一时间内组织者是否有冲突的问题。
可以是SQL语句或者存储过程,不要程序包。

大虾们,帮帮忙``在线等
...全文
110 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
SNAIL_QIQI 2011-07-06
  • 打赏
  • 举报
回复
DECLARE
lv_name VARCHAR2(80) := NAME; --传入的组织者名称
sTime DATE := startTime; --传入的开始日期
eTime DATE := endTime; --传入的结束日期
lv_name2 VARCHAR2(80); --可能存在交叉的组织者名称
BEGIN
BEGIN
SELECT NAME
INTO lv_name2
FROM tb_name a
WHERE a.startTime <= eTime AND a.endTime >= sTime;

IF lv_name2 = lv_name THEN
dbms_output.put('组织者名称:' || lv_name2);
END IF;
EXCEPTION
WHEN no_data_found THEN
dbms_output.put('不存在有交叉的组织者名称');
END IF;

END;
304的的哥 2011-06-28
  • 打赏
  • 举报
回复

--1.找出"开始时间"和"结束时间"按相同的人
select name
from tb_name a
where exists(
select 1 from tb_name b
where a.startTime=b.startTime
and a.endTime=b.startTime)
--2.判断是否有重名的name

--你的表有点问题,那个字段是主键,应该根据主键来判断是否该更新数据,
--而不是人名,因为人名有重复的
cool326236882 2011-06-28
  • 打赏
  • 举报
回复
create or replace Comparison(name_In varchar2,startTime_In Date,endTime_In) as
begin
select t.* from organization t where ((startTime_In between startTime and endTime) or (endTime_In between startTime and endTime)) and name_In = name;
--冲突之后的处理
end Comparison;
Kobayashi 2011-06-28
  • 打赏
  • 举报
回复
没看懂意思。。。你的意思 是不是要查询这张表里面在时间段内有没有组织者???
如果是
select * from table a where a.name like '&name&' and to_char(a.starttime,'yyyy-mm-dd') >= to_char(开始时间,'yyyy-mm-dd') and to_char(a.endtime ,'yyyy-mm-dd') <=to_char(结果时间,'yyyy-mm-dd')

17,137

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧