sql-server SQL筛选器介于当天的开始时间0:00和22小时之后

kgsdhlau  于 2022-10-31  发布在  其他
关注(0)|答案(2)|浏览(157)

我需要在sql中创建一个过滤器,但我不知道具体如何创建。

WHERE date < ?? /*I need it to be today until 10pm */ and
date >= getdate() /* I used getdate(), but I don't know if it's the best way, as I need it to get entries from 0am*/

如果我没有解释清楚,我向你道歉,但如果有必要,我会尽力解释得更清楚。

i7uaboj4

i7uaboj41#

因此,您要比较今天00:00:00和今天22:00:00
首先,您需要从当前日期中获取一个日期,时间为00:00:00
可以这样做

select convert(date, getdate())

接下来,您需要从当前日期获取一个日期时间,其小时为22:00:00
可以这样做

select dateadd(hour, 22, convert(datetime2(0), convert(date, getdate())))

现在可以在where子句中使用这两个日期,如下所示

select *
from   yourTable t
where  t.yourDate > convert(date, getdate())
and    t.yourDate <= dateadd(hour, 22, convert(datetime2(0), convert(date, getdate())))

如果今天是13/10/2022,则此操作将检索介于13/10/2022 00:00:0013/10/2022 22:00:00之间的所有行

xsuvu9jc

xsuvu9jc2#

今天到晚上10点

SELECT DATETIME2FROMPARTS(YEAR(getdate()), MONTH(getdate()), DAY(getdate()), 10, 0, 0, 0, 0)

从0am开始的条目

SELECT CAST(GETDATE() AS DATE)

最终版:

WHERE MyColumnDateTime BETWEEN CAST(GETDATE() AS DATE) 
AND DATETIME2FROMPARTS(YEAR(getdate()), MONTH(getdate()), DAY(getdate()), 22, 0, 0, 0, 0)

相关问题