SQL查询做奇怪的事情
如果我上的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://*.com/questions/1138142/best-way-to-convert-and-validate-a-date-string – gbn 2011-04-11 10:36:05