我的表达能力有点欠缺,标题说的有点绕,直接上demo吧。。。
需求:1.选出当日04:00--次日02:00之间,TABLE表中DateTime字段中最小值和最大值
2.同时需保证,该记录在系统时间00:00-02:00之间也可以查询到
3.判断当前时间是否处于最小值和最大值之间
Sql语句:
select s.FirstTime as minTime,g.LastTime as MaxTime from (select MIN(DateTime) as FirstTime from TABLE where CONVERT(varchar(10),DateTime-'04:00',120) =CONVERT(varchar(10),GETDATE()-(case when (convert(varchar(8),getdate(),108)>'00:00' and convert(varchar(8),getdate(),108)<'02:00') then '23:00' else '00:00' end),120)) as s left join (select MAX(DateTime) as LastTime from TABLE where CONVERT(varchar(10),DateTime-'02:00',120) =CONVERT(varchar(10),GETDATE()-(case when (convert(varchar(8),getdate(),108)>'00:00' and convert(varchar(8),getdate(),108)<'02:00') then '23:00' else '00:00' end),120)) as g on 1=1 where DateDiff(mi,g.LastTime,GETDATE())<10 and DateDiff(mi,GETDATE(),s.FirstTime)<10
没办法,以SQL代码形式,老是乱码,勉强以c++代码形式粘贴吧。。。
如果有同仁还有更优化的代码实现的,希望能指点下。。。
我的sql语句写的比较少,就为了得到更多的指点,我就推荐首页一次了。。。