【问题标题】:Query SQL Server From Specific Time On Previous Date To Specific Time On Current Date从上一个日期的特定时间到当前日期的特定时间查询 SQL Server
【发布时间】:2021-04-07 23:25:30
【问题描述】:

很抱歉这个菜鸟 SQL 问题。我在 SQL 中有一个带有 DateTime 列的表。我需要每天运行一个脚本来显示从昨天上午 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 点,而无需每天手动编辑脚本?

【问题讨论】:

    标签: sql sql-server datetime date-arithmetic


    【解决方案1】:

    我会推荐:

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

    【讨论】:

    • 那个至少不会抛出错误......但它不会返回任何结果。编辑:第一个 1 必须是 -1。我认为这正是我想要的!谢谢!
    • @ChristopherCass:我刚刚解决了算术问题。它现在应该可以按要求工作了。
    【解决方案2】:

    您可以将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())));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多