【发布时间】:2017-12-14 16:28:39
【问题描述】:
我正在尝试使用以下脚本将包含日期的 varchar 转换为 SQL Server 中的日期时间字段
SELECT cast('2017-12-14 14:30:41.007' as datetime)
当我在使用 DateFormat myd 的本地机器上运行它时,它运行良好并返回了一个有效的日期时间。 当我在使用 Dateformat dym 的服务器上运行此语句时,服务器返回以下错误
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
为什么“2017-12-14 14:30:41.007”是“myd”下的有效日期时间,但不是“dym”下的有效日期时间,即使它既不是“dym”也不是“myd”日期?
顺便说一句,我找到了解决这个问题的方法,我问是因为我想了解 SQL Server 中发生了什么
【问题讨论】:
-
因为您没有使用语言中性格式。使用 yyyymmdd hh:nn:ss
-
因为在某些(事实上,大多数)语言中,SQL Server 将格式解释为
yyyy-dd-mm。 mssqltips.com/sqlservertip/5206/… -
@GuidoG 是一种几乎中性的格式。完整的 ISO8601 格式与日期和时间部分之间的
T相同。 -
@PanagiotisKanavos 是,但几乎没有满
标签: sql-server datetime casting