我有一个存储过程,应该获取日期等于当前日期或将来日期的所有记录。 日期保存在 targetDate 列中并格式化为日期时间。 我相应的 WHERE 子句如下:
WHERE A.targetDate >= GETDATE()
一般来说,我的存储过程工作正常,我唯一的问题是 targetDate 是否等于当前日期,因为所有日期都按如下方式保存,即时间设置为零:
2014-02-22 00:00:00.000
我如何更改 WHERE 子句,以便它只考虑日期,但忽略保存的时间,以便即使时间已经过去,我也能获取包含当前日期的任何记录?
非常感谢蒂姆提供的任何帮助。
最佳答案
更改为:
WHERE A.targetDate >= cast(GETDATE() as date)
编辑 - 因为 targetdate 还包含时间,是的,格式如下:
WHERE cast(A.targetDate as date) >= cast(GETDATE() as date)
编辑 - 给出关于性能的评论,可能想尝试:
WHERE a.targetdate >= cast(cast(getdate() as date) as datetime)
上次编辑应该给您相同的结果,并利用目标日期上的任何索引
关于SQL Server : compare datetime day with GETDATE(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21958829/