确定SQL Server的日期格式

确定SQL Server的日期格式,sql,sql-server,azure,datetime-format,Sql,Sql Server,Azure,Datetime Format,我有很多带有时间戳的列,格式为“2016-11-22T20:16:32.573000Z”或“yyyy-MM-ddThh:MM:ss。[sss]Z”,我需要将列类型转换为日期和时间格式 我知道有很多关于在SQL Server(Azure)中使用CAST或CONVERT将字符串转换为日期时间转换的问题。但我似乎无法确定正确的风格: CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) 该格式看起来像ISO 8601样式,但例如,

我有很多带有时间戳的列,格式为“2016-11-22T20:16:32.573000Z”或“yyyy-MM-ddThh:MM:ss。[sss]Z”,我需要将列类型转换为日期和时间格式

我知道有很多关于在SQL Server(Azure)中使用
CAST
CONVERT
将字符串转换为日期时间转换的问题。但我似乎无法确定正确的风格:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

该格式看起来像ISO 8601样式,但例如,样式编号126和127不起作用。那么,我应该使用哪种样式才能成功地转换列?

该格式是明确的,但精度比
datetime
所能容纳的数字还要高


CONVERT(datetime2,'2016-11-22T20:16:32.573000Z')
在不指定样式的情况下可以正常工作,而且您应该避免在新工作中使用
datetime
。(如果您愿意,此时指定样式126或127也可以,但没有必要)

该格式是明确的,但精度比
datetime
所能容纳的数字还要多


CONVERT(datetime2,'2016-11-22T20:16:32.573000Z')
在不指定样式的情况下可以正常工作,而且您应该避免在新工作中使用
datetime
。(如果愿意,此时指定样式126或127也可以,但不需要)

不知道包含类似内容的update SQL语句是否有助于填充新的日期字段和时间字段:

SUBSTRING(MyLongDateTimeStringField,1,10) AS MyNewDateField,
SUBSTRING(MyLongDateTimeStringField,12,8) AS MyNewTimeField

不知道其中包含类似内容的update SQL语句是否有助于填充新的日期字段和时间字段:

SUBSTRING(MyLongDateTimeStringField,1,10) AS MyNewDateField,
SUBSTRING(MyLongDateTimeStringField,12,8) AS MyNewTimeField

是的,这似乎奏效了。我对datetime2数据类型做了一个简单的了解,据我所知,它确实应该是datetime上面的首选数据类型。是的,这似乎起到了作用。对datetime2数据类型进行了简要的研究,据我所知,它确实应该是datetime上面的首选数据类型。