原有数据:
请假开始日期 结束日期 开始时间 结束时间
2013-04-18 2013-04-19 08:00 15:00
先输入
2013-04-17 2013-04-18 08:00 13:00
其中18号两个单据就有重复的情况
区间时间? 时间 sql
------解决方案--------------------
create table che
(请假开始日期 varchar(12),
结束日期 varchar(12),
开始时间 varchar(12),
结束时间 varchar(12)
)
insert into che
select '2013-04-18', '2013-04-19', '08:00', '15:00' union all
select '2013-04-17', '2013-04-18', '08:00', '13:00'
select 请假开始日期,
结束日期,
开始时间,
结束时间,
row_number() over(order by getdate()) 'rn'
into #t
from che
if exists(
select *
from #t a
where exists
(select 1 from #t b
where b.rn<>a.rn and
cast(a.请假开始日期+' '+a.开始时间 as datetime) between
cast(b.请假开始日期+' '+b.开始时间 as datetime)
and cast(b.结束日期+' '+b.结束时间 as datetime))
)
begin
print '有重复请假区间.'
end
else
begin
print '无重复请假区间.'
end
-- 执行结果
/*
有重复请假区间.
*/
------解决方案--------------------
这个么,还是介绍你本书吧,《SQL解惑》。
找到其中的谜题3:麻醉师谜题,关于重叠的时间的计算问题,里面提供了有4-5种解法。相信你看懂了那个,这个就是小菜一碟了。
还有,不是太明白为什么你要把日期和时间分开存放呢?你看1楼还得费劲把它整回去,
