在 SQL Server 查询中,我目前正在使用该子句
WHERE
DAY(trade_date) = DAY(GETDATE()) - 1
AND MONTH(trade_date) = MONTH(GETDATE())
AND YEAR(trade_date) = YEAR(GETDATE())
查询我前一天的数据。
它现在工作正常,但我的问题是,例如,在 8/1/2021,SQL Server 是否会尝试从 8/0/2021 获取数据,或者它是否知道从 7/31/2021 获取数据。
如果此查询不起作用,我可以改用什么?谢谢!
我建议使用适当的日期比较逻辑 - 而不是将其分解为日、月和年。此外,建议使用适当的日期算术函数,DATEADD
而不是仅仅- 1
使用日期值(永远不确定 -1 代表什么:减去一天?周?月?小时?)。
最后 - 我还建议使用SYSDATETIME()
而不是GETDATE()
因为后者总是返回一个DATETIME
数据类型 - 这应该是它的出路,你应该使用DATE
(如果你不需要时间部分),或者DATETIME2(n)
(如果你确实需要时间部分),因为与DATETIME
.
如果您trade_date
是一DATE
列(可能应该是),只需使用:
WHERE
trade_date = DATEADD(DAY, -1, SYSDATETIME())
如果它不是DATE
- 只需根据需要将其转换为日期:
WHERE
CAST(trade_date AS DATE) = DATEADD(DAY, -1, CAST(SYSDATETIME() AS DATE))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句