1

SQL Server 2008 R2 に 2 つのテーブルがあります

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 つのレコードを取得する必要があるのに、レコードが返されないのはなぜですか?

4

1 に答える 1

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') を使用してみてください。

于 2013-04-18T09:02:39.273 に答える