ch.*_*ida 0 sql nvarchar sql-server-2008 datetime-conversion
我有这个代码:
DECLARE @StartDate nvarchar
SET @StartDate='22/10/2014'
SELECT CAST (@StartDate as datetime)
Run Code Online (Sandbox Code Playgroud)
它给了我这个错误:
从字符串转换日期和/或时间时转换失败.
任何人都可以提出更好的方法/至少没有错误的方法来做到这一点.
SQL Server支持许多格式 - 请参阅MSDN联机丛书CAST
和CONVERT
.大多数这些格式取决于您拥有的设置 - 因此,这些设置可能会有效 - 有时不会.
解决此问题的方法是使用SQL Server支持的(略微调整的)ISO-8601日期格式 - 此格式始终有效 - 无论您的SQL Server语言和日期格式设置如何.
在ISO-8601格式由SQL Server支持有两种形式:
YYYYMMDD
只为日期(没有时间部分); 请注意:没有破折号!,这非常重要!YYYY-MM-DD
是不是独立于你的SQL Server的日期格式设置,将不适用于所有情况!要么:
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中的任何语言和日期格式设置.
DATE
如果您只需要日期部分,并且DATETIME2(n)
需要日期和时间,则建议使用SQL Server 2008及更高版本.您应尽可能尝试开始逐步淘汰DATETIME
数据类型
归档时间: |
|
查看次数: |
19067 次 |
最近记录: |