sql server 判断时间段是否重叠

--判断 加班 时间段 是否重叠
--工号0100993 加班 加班日期  2016-01-09  起始时间08:30  结束时间17:30
select count(*) tcount from (
select case when (
('08:30'<tstarttime and '17:30'<=tstarttime and '17:30'>'08:30')  --在原有时间段之前
 or ('08:30'>=tendtime and '17:30'>'08:30'))    --在原有时间段之后
then 1 else 0 end trs from ijb_sq   --0为有重叠记录,0个0 无重叠时间段,n个0 n条重叠的记录。
 where tcode='0103993' and tdate='2016-01-09' )t where trs=0
--对比数据库 若无重叠时间段 tcount =0 若有重叠时间段 tcount =N ( N 不等于0)  N 条重叠的时间段 
----判断 请假 时间段 是否重叠
--工号0100993   请假起始时间'2016-02-08 08:30' 请假结束时间2016-02-12 12:00'>
select count(*) tcount from (select case when (  --连接日期和时间 +
('2016-02-08 08:30'<tstart+' '+tstarttime and '2016-02-10 12:00'<=tstart+' '+tstarttime --在原有时间段之前
and '2016-02-10 12:00'>'2016-02-08 08:30') or 
('2016-02-08 08:30'>=tend+' '+tendtime and '2016-02-10 12:00'>'2016-02-08 08:30'))  --在原有时间段之后
then 1 else 0 end trs 
from iqj_sq where tcode='0100893')t where trs=0
--0为有重叠记录,0个0 无重叠时间段,n个0 n条重叠的记录。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值