我有这个查询:
update table
set initTime = '2012-08-20 09:30:00.000'
WHERE id='0124'
它说:
从 varchar 到 datetime 的转换生成了超出范围的值。
你能帮我吗?:(
我有这个查询:
update table
set initTime = '2012-08-20 09:30:00.000'
WHERE id='0124'
它说:
从 varchar 到 datetime 的转换生成了超出范围的值。
你能帮我吗?:(
为了安全起见,您应该对日期字符串使用与语言无关的日期格式:
UPDATE dbo.table
SET initTime = '2012-08-20T09:30:00.000'
WHERE id = '0124'
看到不同?我T
在日期和时间部分之间添加了一个。这使其成为有效的 ISO-8601 日期/时间字符串,无论您拥有何种 SQL Server 语言和区域设置,它都应该有效。
如果没有T
中间的那个,它就不是一个正确的 ISO-8601 日期/时间字符串,并且根据 SQL Server 中的语言/区域/日期格式设置,它可能被解释为2012 年第 20 个月的第 8 天,当然,那第 20 个月的排序不存在..... :-)
或使用 YYYYMMDD HH:MM:SS 格式。您可以在这篇文章中找到有关明确格式的更多信息 http://beyondrelational.com/modules/2/blogs/70/posts/10898/understanding-datetime-column-part-ii.aspx
将其转换为日期时间,然后将其输入表中。
update table
set initTime = CONVERT(DateTime, '2012-08-20 09:30:00.000')
WHERE id='0124'
尝试在您的陈述之前使用此命令。我认为您的语言设置中有另一个 DAY/MONTH 订单:
SET DATEFORMAT ymd;