目前我正在使用下面提到的代码
CONVERT(DATETIME, "16-05-2015 21:27:25.280",105)
使用它在我的系统文化和我们在英国的一个客户工作。但是在我们的美国客户那里遇到了问题。
错误信息:
将nvarchar数据类型转换为日期时间数据类型导致值超出范围
因此,有任何方法将字符串转换为DATETIME
取决于系统文化,如。net。
Thanks in advance
Thejus tv
各种设置(语言,日期格式)只影响DateTime
在SQL Server Management Studio中显示给您的方式-或者当您尝试将字符串转换为DateTime
时如何解析它。
SQL Server支持许多格式-参见MSDN在线图书CAST
和CONVERT
。这些格式中的大多数都是依赖于您所拥有的设置-因此,这些设置有时可能有效-有时则无效。
-
YYYYMMDD
仅用于日期(没有时间部分);注意:没有破折号!,这非常重要!YYYY-MM-DD
是NOT独立于您的SQL Server中的日期格式设置,并将NOT在所有情况下工作!
或:
-
YYYY-MM-DDTHH:MM:SS
用于日期和时间-注意这里:此格式有破折号(但可以省略),以及固定的T
作为DATETIME
的日期和时间部分之间的分隔符。
此参数适用于SQL Server 2000及更新版本。
如果你使用SQL Server 2008或更新的DATE
数据类型(只有DATE
- 而不是 DATETIME
!),那么你确实也可以使用YYYY-MM-DD
格式,这也将工作,在你的SQL Server中的任何设置。
不要问我为什么整个话题如此棘手和令人困惑-这就是它的方式。但是使用YYYYMMDD
格式,您应该可以适用于任何版本的SQL Server以及SQL Server中的任何语言和日期格式设置。
对于SQL Server 2008及更新版本,如果你只需要日期部分,建议使用DATE
;如果你同时需要日期和时间,建议使用DATETIME2(n)
。如果可能的话,您应该尝试开始逐步淘汰DATETIME
数据类型