TSQL中的日期比较

t_p*_*lus 1 sql sql-server sqldatetime sql-server-2012

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

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

SELECT Name, CreatedDate 
FROM EmployeeTable 
WHERE CreatedDate > '20151214'
Run Code Online (Sandbox Code Playgroud)

虽然以下查询没有?

SELECT Name, CreatedDate 
FROM EmployeeTable 
WHERE CreatedDate = '20151214'
Run Code Online (Sandbox Code Playgroud)

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

SELECT Name, CreatedDate 
FROM EmployeeTable 
WHERE CAST(CreatedDate as DATE) = '2015-12-14'
Run Code Online (Sandbox Code Playgroud)

有没有办法使用相等运算符而不必使用强制转换?

CreatedDate是类型DATETIME,包括时间.

pet*_*rov 7

可能CreatedDate包含时间部分(例如,类型datetime).这就是=开箱即用的原因.当你把它投射到date时间部分被删除,然后=比较工作正常.

  • 那么,时间部分不会搞乱`<`或`>`比较.想一想,这很正常.例如'20140101 3 PM'仍然大于'20140101',但它不等于它. (8认同)