将日期时间与 SQL Server 中的日期进行比较
将日期时间值与仅日期进行比较时,结果可能会出乎意料。这是因为日期时间数据类型包含日期和时间部分。例如,如果您有一个包含日期时间类型的 DateCreated 列的用户表,则以下查询:
Select * from [User] U where U.DateCreated = '2014-02-07'
将不会返回任何记录,即使该用户是在 2014 年 2 月 7 日 12 点创建的:30:47.220.
要准确比较日期时间与仅日期,请使用以下命令方法:
Select * from [User] U where U.DateCreated >= '2014-02-07' and U.DateCreated < dateadd(day,1,'2014-02-07')
此查询是 SARGable,这意味着它可以使用 DateCreated 列上的索引。
为什么不使用函数?
使用像 CONVERT 这样的函数从日期时间中提取日期部分可能很诱人。但是,不建议这样做。在 WHERE 子句或连接条件中使用函数:
避免在处理日期和时间范围时,也应避免使用 BETWEEN
BETWEEN。请改用以下形式:
WHERE col >= '20120101' AND col < '20120201'
此形式与所有数据类型和精度兼容,无论时间部分如何。
以上是如何正确比较 SQL Server 中的 DATETIME 和 DATE 值?的详细内容。更多信息请关注PHP中文网其他相关文章!