SQL查询做了奇怪的事情

SQL查询做了奇怪的事情,sql,sql-server-2008-express,Sql,Sql Server 2008 Express,如果我在SQL Server Express 2008上运行此查询: Insert NoteBook (Date, Note) Values ('11/04/2011 11:02:46', 'test') 它将日期存储为2011年11月4日 如何防止这种情况发生?使用:YYYYMMDD(或YYYY-MM-DDTHH:MM:SS)-无论您的SQL Server语言和语言环境设置如何,它始终有效 INSERT INTO dbo.NoteBook(Date, Note) VALUES('2011-

如果我在SQL Server Express 2008上运行此查询:

Insert NoteBook (Date, Note) Values ('11/04/2011 11:02:46', 'test')
它将日期存储为2011年11月4日

如何防止这种情况发生?

使用:
YYYYMMDD
(或
YYYY-MM-DDTHH:MM:SS
)-无论您的SQL Server语言和语言环境设置如何,它始终有效

INSERT INTO dbo.NoteBook(Date, Note) 
VALUES('2011-04-11T11:02:46', 'test')
SQL Server中的日期不是以任何特定的面向字符串的格式存储的,不管您看到什么,日期都是日期

您可以看到日期的字符串表示形式,但同样:它不是以这种方式存储的,因此您不能“阻止”它以这种方式存储

检查SQL Server中的语言设置:

SELECT @@LANGUAGE
你有什么语言??该语言定义了显示日期的默认格式。

使用:
YYYYMMDD
(或
YYYY-MM-DDTHH:MM:SS
)-无论您的SQL Server语言和区域设置如何,该语言始终有效

INSERT INTO dbo.NoteBook(Date, Note) 
VALUES('2011-04-11T11:02:46', 'test')
SQL Server中的日期不是以任何特定的面向字符串的格式存储的,不管您看到什么,日期都是日期

您可以看到日期的字符串表示形式,但同样:它不是以这种方式存储的,因此您不能“阻止”它以这种方式存储

检查SQL Server中的语言设置:

SELECT @@LANGUAGE

你有什么语言??该语言定义了显示日期的默认格式。

@marc\u s这应该是一个答案,而不仅仅是一个注释。这已经做得很死了,尤其是在这里@marc\u s这应该是一个答案,而不仅仅是一个注释。这已经做得很死了,尤其是在美国英语中。我可以在哪里更改它,或者如果我要使用yyyymmdd,我应该在哪里更改它?@teadrinkinggeek:如果您使用
yyyymmdd
您不需要更改任何内容-ISO-8601格式始终有效。否则,您需要在SQL Server中查看—这允许您定义字符串是否将被解释为
MM/DD/YYYY
(对于美国)或
DD/MM/YYYY
()您是对的!我使用INSERT-INTO.NoteBook(Date,Note)值('2011-04-11T11:02:46','test'),它正确地显示了它。谢谢。我们英语。我可以在哪里更改它,或者如果我要使用yyyymmdd,我应该在哪里更改它?@teadrinkinggeek:如果您使用
yyyymmdd
您不需要更改任何内容-ISO-8601格式始终有效。否则,您需要在SQL Server中查看—这允许您定义字符串是否将被解释为
MM/DD/YYYY
(对于美国)或
DD/MM/YYYY
()您是对的!我使用INSERT-INTO.NoteBook(Date,Note)值('2011-04-11T11:02:46','test'),它正确地显示了它。谢谢