“可选的时区指示符Z用于更轻松地将具有时区信息的XML datetime 值映射到没有SQL Server datetime 值的值时区.Z是时区UTC-0的指示符。其他时区用+或 - 方向的HH:MM偏移表示。例如:2006-12-12T23:45:12-08:00。“< / p>
但是当我跑步时:
declare @d datetime;
set @d=getdate();
print CONVERT(varchar(40), @d, 127)
结果是2012-07-31T14:04:11.447
。没有时区部分。我做错了什么?
答案 0 :(得分:3)
DateTime
类型不包含时区,GETDATE()
函数返回DateTime。
相反,您需要使用SQL Server的DateTimeOffset
类型,这是SQL Server 2008中引入的。这将使您的示例:
declare @d datetimeoffset;
set @d=sysdatetimeoffset();
print CONVERT(varchar(40), @d, 127)
请注意使用SYSDATETIMEOFFSET()
功能。
那就是说,在实践中你实际上想要实现什么目标?如果你有一些实际的无时区数据(例如DateTime列中的数据),你试图从中提取时区,那将会很棘手。