首页 > 解决方案 > 如何使用滑动日期但特定时间进行动态 SQL Server 查询?

问题描述

我正在尝试进行动态查询,搜索从 9 天前 21:00 到 2 天前 23:00 的记录。

我被要求在 Maximo 中制作每周报告,其中列出了周日 21:00 和接下来的周五 23:00 之间的所有记录。该报告必须在每周二的 6:00 生成。我从其他查询中拼凑出一些东西,但不知道从这里去哪里:

startdatetime >= dateadd(hour, 21, dateadd(dd, datediff(dd, 0, getdate()), 0))
and startdatetime <= dateadd(hour, 23, dateadd(dd, datediff(dd, 0, getdate()), 0))

我以前用过DATEADD显示当天特定时间之间的所有记录。我不知道如何获得以前日期的那些时间。我尝试做“...dateadd(dd,datediff(dd,0,getdate()-9),0) 和 ...dateadd(dd,datediff(dd,0,getdate()-2),0)" ,但我得到一个 SQL 错误代码 207。我显然不明白第二个 DATEADD 段是如何工作的。谁能告诉我我做错了什么?

标签: sql-serverdatetimemaximo

解决方案


您真的很接近,您只需将第二个零更改为您想要移动的日期。

WHERE startdatetime >= dateadd(hour,21,dateadd(dd,datediff(dd,0,getdate()),-9))
AND startdatetime <= dateadd(hour,23,dateadd(dd,datediff(dd,0,getdate()),-3))

错误 207 指的是无效的列名。确保您的查询没有任何拼写错误并且这些列确实存在。


推荐阅读