我需要检查当前时间是否在两个日期时间列值之间。
而且我只需要检查时间是否在范围之间,我不想查看日期。
我知道如何检查如下所示的日期范围之间的日期
SELECT
*
FROM
Table1 T
WHERE
CAST(GETDATE() AS DATE) BETWEEN T.StartDate AND T.EndDate
我们已经存储了开始日期和结束日期,如下所示。
StartDate - 1900-01-01 08:00:00.000
EndDate - 1900-01-01 19:00:00.000
是否有类似的东西来检查时间是否存在于日期范围内?
如果你只想查看时间
SELECT *
FROM Table1 T
WHERE CAST(GETDATE() AS TIME) BETWEEN cast(T.StartDate as TIME) AND cast(T.EndDate as TIME)
我猜是这样的
declare @d1 datetime ='20171220 10:00'
, @d2 datetime = '20171220 12:00'
, @t time ='11:00';
select 'Yes' where @t between cast(@d1 as time) and cast(@d2 as time);
当我尝试下面的时候它起作用了
SELECT *
FROM Table1 T
WHERE CAST(GETDATE() AS TIME) BETWEEN CAST(T.StartDate AS TIME) AND CAST(T.EndDateAS TIME)
CONVERT()到TIME
,然后回到DATETIME
并进行比较
WHERE CONVERT(DATETIME, CONVERT(TIME, GETDATE()))
BETWEEN T.StartDate AND T.EndDate