为什么以下每个都返回记录:
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
,包括次数。
答案 0 :(得分:7)
可能CreatedDate
包含时间部分(例如,类型为datetime
)。这就是=
开箱即用的原因。当您将其转换为date
时,部分将被删除,然后=
比较正常。
答案 1 :(得分:1)
DATEDIFF
是检查SQL中日期相等的首选方法,除非您使用较新的DATE
类型(而不是DATETIME
)。
转换为DATE
会删除任何时间部分。
DATEDIFF
可能也更强大(而不是&lt;&gt; =)