SQL检查当前时间介于两个DATETIME列之间

问题描述 投票:1回答:4

我需要检查当前时间是否在两个日期时间列值之间。

而且我只需要检查时间是否在范围之间,我不想查看日期。

我知道如何检查如下所示的日期范围之间的日期

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

是否有类似的东西来检查时间是否存在于日期范围内?

sql sql-server datetime
4个回答
4
投票

如果你只想查看时间

SELECT  *
FROM Table1 T
WHERE CAST(GETDATE() AS TIME) BETWEEN cast(T.StartDate as TIME) AND cast(T.EndDate as TIME)

1
投票

我猜是这样的

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);

1
投票

当我尝试下面的时候它起作用了

SELECT *
FROM Table1 T
WHERE CAST(GETDATE() AS TIME) BETWEEN CAST(T.StartDate AS TIME) AND CAST(T.EndDateAS TIME)

-1
投票

CONVERT()到TIME,然后回到DATETIME并进行比较

WHERE CONVERT(DATETIME, CONVERT(TIME, GETDATE()))
      BETWEEN T.StartDate AND T.EndDate
© www.soinside.com 2019 - 2024. All rights reserved.