SQL 中的日期比较

Date Comparison in TSQL

为什么下面的每条returns记录:

SELECT Name, CreatedDate 
FROM EmployeeTable 
WHERE CreatedDate < '20151214'

SELECT Name, CreatedDate 
FROM EmployeeTable 
WHERE CreatedDate > '20151214'

而下面的查询没有?

SELECT Name, CreatedDate 
FROM EmployeeTable 
WHERE CreatedDate = '20151214'

我必须使用带有相等运算符的 CAST 来获得我想要的结果:

SELECT Name, CreatedDate 
FROM EmployeeTable 
WHERE CAST(CreatedDate as DATE) = '2015-12-14'

有没有不用强制转换就可以使用相等运算符的方法?

CreatedDateDATETIME 类型,包括时间。

可能 CreatedDate 包含时间部分(例如 datetime 类型)。这就是 = 不能开箱即用的原因。当您将其转换为 date 时,时间部分将被删除,然后 = 比较工作正常。

DATEDIFF 是检查 SQL 中日期是否相等的首选方法,除非您使用较新的 DATE 类型(而不是 DATETIME)。

转换为 DATE 会删除任何时间部分。

DATEDIFF 可能也更强大(比 <>=)