0

我成功地将 XML 类型的参数作为存储过程参数传递。我处理来自 XML 的所有数据没有问题,但我发现来自 XML 的日期没有正确检索。

例如,2013-03-14T15:14:53.598438+01:00现在2013-03-14 14:14:00. 似乎 SQL 正在计算+1以显示时间。

我正在使用以下 T-SQL 从 xml 获取日期

select 
   A.B.value('xs:dateTime((ConfirmationDate)[1])', 'smalldatetime') as ConfirmationDate
FROM    
   @XML.nodes('/ArrayOfPreOrder/PreOrder/confirmationinfo/ConfirmationInfo') A(B)) as ConfirmationDate

我该如何纠正这个问题?服务器和 SQL Server 都在同一个时区。

4

1 回答 1

1

检查您的时区设置和您要导入的时区之间是否存在差异...

SELECT SYSDATETIMEOFFSET()

DECLARE @TimeZone NVARCHAR(255)
EXEC master.dbo.xp_instance_regread 

N'HKEY_LOCAL_MACHINE', 
N'SYSTEM\CurrentControlSet\Control\TimeZoneInformation',
N'TimeZoneKeyName',
@TimeZone OUTPUT

SELECT @TimeZone

您正在导入的 XML 中指定时区,所以我猜它正在为您将其转换为本地时间。因此,您从 +1 导入的时区将是 +2。

于 2013-03-14T17:26:29.843 回答