我有很多带有时间戳的列,格式为以下nvarchar
'2016-11-22T20:16:32.573000Z'或'yyyy-MM-ddThh:mm:ss。[sss] Z'和我需要将列类型转换为日期和时间格式。
我知道有关使用CAST
或CONVERT
在SQL Server(Azure)中将字符串转换为日期时间转换的问题很多。但是我似乎无法确定正确的样式:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
格式类似于ISO 8601样式,例如样式编号126和127无效。那么我应该使用哪种样式才能成功转换列?
答案 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