首页 >数据库 >mysql教程 >如何正确比较 SQL Server 中的日期时间值与仅日期?

如何正确比较 SQL Server 中的日期时间值与仅日期?

DDD
DDD原创
2025-01-05 19:52:45141浏览

How to Correctly Compare Datetime Values with Only Dates in SQL Server?

将日期时间值与 SQL Server 中的仅日期进行比较

通过与仅包含日期部分的日期时间值进行比较来查询数据库记录时,了解这一点至关重要

问题

考虑以下 SQL 查询:

Select * from [User] U
where  U.DateCreated = '2014-02-07'

如果用户是在 '2014-02-07 12 创建的: 30:47.220',查询不会返回任何数据,因为比较是严格针对日期部分执行的

解决方案

要正确地将日期时间值与日期进行比较,您应该将其与一天的开始和结束括起来:

Select * from [User] U
where U.DateCreated >= '2014-02-07' and U.DateCreated < dateadd(day,1,'2014-02-07')

这种方法确保查询包含在指定日期创建的记录,无论时间如何

避免在 WHERE 子句中使用函数

避免在 WHERE 子句或连接条件中使用函数(例如 Convert)非常重要,原因如下:

  • 它们可以阻止索引优化,使查询变慢。
  • 它们为每一行引入不必要的计算,可能会降低性能。

不要依赖 BETWEEN Either

通常建议避免对日期使用 BETWEEN 运算符以及时间比较。相反,请使用以下形式:

WHERE col >= '20120101' AND col < '20120201'

无论数据类型或精度如何,这种方法都可以一致地工作,并且还可以避免 BETWEEN 的潜在陷阱。

以上是如何正确比较 SQL Server 中的日期时间值与仅日期?的详细内容。更多信息请关注PHP中文网其他相关文章!

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