0

根据这篇 MSDN 文章

"可选的时区指示符 Z 用于更轻松地将具有时区信息的 XML日期时间值映射到没有时区的 SQL Server日期时间值。Z 是时区 UTC-0 的指示符。其他时区在 + 或 - 方向用 HH:MM 偏移量表示。例如:2006-12-12T23:45:12-08:00。

但是当我运行时:

declare @d datetime;
set @d=getdate();
print CONVERT(varchar(40), @d, 127)

结果是2012-07-31T14:04:11.447。没有时区部分。我究竟做错了什么?

4

1 回答 1

3

DateTime类型不包括时区,并且该GETDATE()函数返回一个 DateTime。

相反,您需要使用 SQL DateTimeOffsetServer 2008 中引入的 SQL Server 类型。这将使您的示例:

declare @d datetimeoffset;
set @d=sysdatetimeoffset();
print CONVERT(varchar(40), @d, 127)

注意SYSDATETIMEOFFSET()函数的使用。

也就是说,在实践中,您实际上想要实现什么?如果您有一些实际的无时区数据(例如 DateTime 列中的数据),您试图从中提取时区,那将是很棘手的。

于 2012-07-31T21:20:14.487 回答