尝试使用 SQL 插入日期时出现错误 242

Man*_* F. 4 sql sql-server datetime

为什么当我尝试将此字符串插入 SQL Server 数据库表的“datetime”列时,会出现代码 242 的错误消息:

'2012-11-16 00:00:00.000'
Run Code Online (Sandbox Code Playgroud)

错误信息如下:

Server: Msg 242, Level 16, State 3, Line 1
The conversion of a char data type to a datetime data
type resulted in an out-of-range datetime value.
Run Code Online (Sandbox Code Playgroud)

例如,如果我尝试插入此值,则不会出现此错误:

'2012-11-16 15:00:00.000'
Run Code Online (Sandbox Code Playgroud)

Ste*_*ger 5

将其插入为'2012-11-16T00:00:00.000'

如果您不需要时间,请将其插入为

'20121116'
Run Code Online (Sandbox Code Playgroud)

这些分别是日期时间/日期的 ISO 格式。
与所有其他格式一样,您会遇到问题,具体取决于运行 SQL 语句的用户的语言。

您也可能会在几个月/几天内遇到类似的问题,而且并不总是很明显。

例如,如果您解析类似的字符串'01/01/2015',它将始终有效。但是当你到达 时'01/13/2015',你会遇到问题,因为英语使用month/day/year,而例如德语使用day/month/year,并且 13 不是有效的月份......

就您而言,它在某种程度上误解了时间,这可能会导致各种奇怪的错误。