查询 SQL 服务器从上一日期的特定时间到当前日期的特定时间

Query SQL Server From Specific Time On Previous Date To Specific Time On Current Date

抱歉这个菜鸟 SQL 问题。我在 SQL 中有一个带有 DateTime 列的 table。我每天需要 运行 一个脚本来显示从昨天早上 8 点到今天早上 8 点的所有台词。例如,今天我会 运行:

select *
from Table
Where DateTime > '2020-12-30 08:00:00.000' and DateTime < '2020-12-31 08:00:00.000'

我也知道我可以 运行 这个,但这只会给我前一天到当前时间:

select *
from Table
Where DateTime >= DATEADD(day,-1, GETDATE()) and DateTime < GETDATE())

但是否有创建脚本的技巧,这样我就可以从昨天早上 8 点到今天早上 8 点,而无需每天手动编辑脚本?

我会推荐:

select *
from mytable
where 
    datetime >= dateadd(hour, 8, dateadd(day, -1, convert(datetime, convert(date, getdate()))))
    and datetime < dateadd(hour, 8, convert(datetime, convert(date, getdate()))))

您可以将 getdate() 转换为 date 并返回 datetime 以将其截断为今天 00:00:00。然后使用 dateadd() 但有几个小时。 -16 表示昨天 08:00:00,+8 表示今天 08:00。

SELECT *
       FROM elbat
       WHERE nmuloc >= dateadd(hour, -16, convert(datetime, convert(date, getdate())))
             AND nmuloc < dateadd(hour, 8, convert(datetime, convert(date, getdate())));