TSQL不等于<>行为不同

时间:2013-04-18 08:51:59

标签: sql tsql sql-server-2008-r2

我在SQL Server 2008 R2中有两个表

TABLE1 - Column DateCreated datetime null
TABLE2 - Column DateCreated datetime null

When I see the profiler
SELECT * from TABLE1
WHERE DateCreated <> '2011-06-10 00:00:00.000'

这个日期我有3条记录

2011-06-10 00:00:00.000
2011-06-10 00:00:00.000
2011-06-10 09:45:00.000

没有返回任何记录

在TABLE2上

SELECT * from TABLE2
WHERE DateCreated <> '2011-06-10 00:00:00.000'

这个日期我有3条记录

2011-06-10 18:02:05.000
2011-06-10 18:05:08.000
2011-06-10 18:07:09.000

返回所有3条记录。这很奇怪。为什么在第一种情况下,当我得到1条记录时,我没有找回任何记录???

1 个答案:

答案 0 :(得分:2)

在您的SQL中,'2011-06-10 00:00:00.000'不是日期。它是一个转换为日期的字符串。在数据库'2011-06-10 00:00:00.000'可能实际上是'2011-06-10 00:00:00.00001'。也许尝试使用DATEDIFF(mcs,DateCreated,'2011-06-10 00:00:00.000')来查看实际的差异。