SQL Server : compare datetime day with GETDATE()

标签 sql sql-server date datetime

我有一个存储过程,应该获取日期等于当前日期或将来日期的所有记录。 日期保存在 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/

相关文章:

date - 用片刻检查日期是否从2分钟前开始

postgresql - 当 bool 字段设置为 true 时,postgres 更新日期字段

mysql - 多选同一张表

mysql - 如何将多维数组传输到 MySQL 表(通过 Zeoslib)?

SQL Server 相当于 Oracle 的 NULLS FIRST?

sql-server - 如何为 2 个可为空的列添加唯一约束?

sql-server - 对一行中的列值求和并保存到另一列中

php - jQuery 数据表 MySQL 日期到 PHP 日期

sql - 在多个选择查询sql上聚合Where

SQL 需要匹配 patindex() 函数中的 '-' 字符