首页 >数据库 >mysql教程 >如何正确比较 SQL Server 中的 DATETIME 和 DATE 值?

如何正确比较 SQL Server 中的 DATETIME 和 DATE 值?

Barbara Streisand
Barbara Streisand原创
2025-01-04 17:27:39493浏览

How Can I Correctly Compare DATETIME and DATE Values in SQL Server?

将日期时间与 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn