sql语句中如何根据不同的条件,执行不同的where条件

时间:2021-09-07 22:35:55

我的表达能力有点欠缺,标题说的有点绕,直接上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语句写的比较少,就为了得到更多的指点,我就推荐首页一次了。。。