2013-03-10 27 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'