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