TSQL中的日期比较

时间:2015-12-14 17:40:30

标签: sql sql-server sql-server-2012 sqldatetime

为什么以下每个都返回记录:

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'

有没有办法在不使用强制转换的情况下使用相等运算符?

CreatedDate的类型为DATETIME,包括次数。

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:1)

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

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

DATEDIFF可能也更强大(而不是&lt;&gt; =)