0

タイプ XML のパラメーターをストアド プロシージャのパラメーターとして正常に渡しています。XML からのすべてのデータの処理に問題はありませんが、XML からの日付が正しく取得されていないことがわかりました。

たとえば、2013-03-14T15:14:53.598438+01:00は now2013-03-14 14:14:00です。+1時間を表示するためにSQLが計算しているようです。

次の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 に答える