如果我上的SQL Server Express 2008運行此查詢:SQL查詢做奇怪的事情
Insert NoteBook (Date, Note) Values ('11/04/2011 11:02:46', 'test')
它存儲日期爲04/11/2011
我如何避免這種情況?
如果我上的SQL Server Express 2008運行此查詢:SQL查詢做奇怪的事情
Insert NoteBook (Date, Note) Values ('11/04/2011 11:02:46', 'test')
它存儲日期爲04/11/2011
我如何避免這種情況?
使用ISO-8601 format:YYYYMMDD
(或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
你有什麼語言?該語言定義了顯示日期的默認格式。
美國英語。我在哪裏可以改變它,或者我應該改變它,如果我要使用yyyymmdd? – TeaDrinkingGeek 2011-04-11 10:31:41
@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
你說得對!我使用INSERT INTO dbo.NoteBook(Date,Note) VALUES('2011-04-11T11:02:46','test')並且它正確顯示了它。謝謝。 – TeaDrinkingGeek 2011-04-11 10:37:08
@marc_s這應該是一個答案,而不僅僅是一個評論。 – 2011-04-11 10:30:15
這已經完成了死亡,至少在這裏http://stackoverflow.com/questions/1138142/best-way-to-convert-and-validate-a-date-string – gbn 2011-04-11 10:36:05