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

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

Barbara Streisand
发布: 2025-01-04 17:27:39
原创
437 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板