2013-03-10 33 views
2

我在這裏很奇怪,我...絕對簡單的SQL Server查詢不返回任何

Select BARCODE, DATA 
from HISTORIA 
WHERE BARCODE='25405187' AND DATA = '2013-03-08 00:00:00.000' 

Select BARCODE, DATA 
from HISTORIA 
WHERE BARCODE='25405187' 

簡單吧?

現在請大家看一下返回的數據:

enter image description here

Ekhmmm ......爲什麼...... WHYYYY? :)當你看到適當的日期在那裏,但比較殺死結果。

我的SQL Server 2005 Express和管理Studio Express的

+1

是什麼'選擇#2013年3月8日00:00:00.000#'返回?我懷疑SQL以不同的方式讀取數據,然後顯示它的內容,特別是關於字符串中的月/日位置。 – Oded 2013-03-10 20:00:12

+0

什麼數據類型有'DATA'? – 2013-03-10 20:00:15

+0

當您使用「2013年3月00日00:00:00:00」(或等同的短月名稱)時會發生什麼? – Oded 2013-03-10 20:01:57

回答

3

'2013-03-08 00:00:00.000'not an unambiguous format鑄造datetime時。它可以意味着8月3日或3月8日。

這取決於您的DATEFORMAT設置(而這取決於您的登錄語言)。

SET LANGUAGE english 

SELECT CAST('2013-03-08 00:00:00.000' AS DATETIME) AS english 

SET LANGUAGE british 

SELECT CAST('2013-03-08 00:00:00.000' AS DATETIME) AS british 

返回

Changed language setting to us_english. 
english 
----------------------- 
2013-03-08 00:00:00.000 

Changed language setting to British. 
british 
----------------------- 
2013-08-03 00:00:00.000 

使用

WHERE BARCODE='25405187' AND DATA = '20130308 00:00:00.000' 

或者更簡單地說

WHERE BARCODE='25405187' AND DATA = '20130308' 
+0

作品!大感謝! – 2013-03-10 21:12:05

1

試試這個標準(ISO)日表示:

Select BARCODE, DATA 
from HISTORIA 
WHERE BARCODE='25405187' AND DATA = '2013-03-08T00:00:00.000'