2011-04-11 162 views
0

如果我上的SQL Server Express 2008運行此查詢:SQL查詢做奇怪的事情

Insert NoteBook (Date, Note) Values ('11/04/2011 11:02:46', 'test') 

它存儲日期爲04/11/2011

我如何避免這種情況?

+0

@marc_s這應該是一個答案,而不僅僅是一個評論。 – 2011-04-11 10:30:15

+0

這已經完成了死亡,至少在這裏http://stackoverflow.com/questions/1138142/best-way-to-convert-and-validate-a-date-string – gbn 2011-04-11 10:36:05

回答

4

使用ISO-8601 formatYYYYMMDD(或YYYY-MM-DDTHH:MM:SS) - 無論您的SQL Server語言和區域設置如何,它都可以正常工作。

INSERT INTO dbo.NoteBook(Date, Note) 
VALUES('2011-04-11T11:02:46', 'test') 

在SQL Server中的日期爲存儲在任何面向特定字符串格式 - 日期是日期是日期,不管你看到了什麼。

你看日期的字符串表示 - 但是:它是存儲的方式 - 因此你不能「阻止」將其存儲這樣...

檢查SQL語言設置服務器:

SELECT @@LANGUAGE 

你有什麼語言?該語言定義了顯示日期的默認格式。

+0

美國英語。我在哪裏可以改變它,或者我應該改變它,如果我要使用yyyymmdd? – TeaDrinkingGeek 2011-04-11 10:31:41

+0

@teadrinkinggeek:如果你使用'yyyymmdd',你不需要改變任何東西 - ISO-8601格式**總是**。否則,您需要查看SQL Server中的[SET DATEFORMAT](http://msdn.microsoft.com/de-de/library/ms189491.aspx) - 這允許您定義您的字符串是否將被解釋爲「MM/DD/YYYY'(美國)或'DD/MM/YYYY'([世界其他地區](http://en.wikipedia.org/wiki/Date_format_by_country)) – 2011-04-11 10:33:21

+1

你說得對!我使用INSERT INTO dbo.NoteBook(Date,Note) VALUES('2011-04-11T11:02:46','test')並且它正確顯示了它。謝謝。 – TeaDrinkingGeek 2011-04-11 10:37:08