识别日期格式SQL Server

时间:2019-01-08 07:07:41

标签: sql sql-server azure datetime-format

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

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

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

格式类似于ISO 8601样式,例如样式编号126和127无效。那么我应该使用哪种样式才能成功转换列?

2 个答案:

答案 0 :(得分:4)

该格式是明确的,但精度超过datetime所能容纳的位数。

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

答案 1 :(得分:0)

不知道其中包含这样的更新SQL语句是否可能有助于填充新的日期字段和新的时间字段:

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