2012-07-31 23 views
0

this MSDN articleSQL Server CONVERT不能正確轉換時區?

「可選的時區的指標,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。沒有時區部分。我究竟做錯了什麼?

回答

3

DateTime類型不包含時區,而GETDATE()函數返回DateTime。

相反,你需要使用SQL Server的DateTimeOffset類型,這是在SQL Server 2008這將使你的例子介紹:

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

注意使用SYSDATETIMEOFFSET()功能。

這就是說,你在實踐中究竟想達到什麼目的?如果您有一些實際的無時區數據(例如DateTime列中的數據),您試圖從中提取時區,這將會非常棘手。