2016-10-18 6 views
0

데이터는 XML (샘플)로 저장됩니다 : - 나는의 OpenXML을 사용하여 데이터를 읽고있다OpenXML을 사용하여 XML을 읽는 동안 UTC를 현지 시간으로 변환하는 방법은 무엇입니까?

<root> 
    <data> 
     <checked>true</checked> 
     <datetimestamp>2016-10-18T08:11:12-06:00</datetimestamp> 
    </data> 
    <data> 
     <checked>true</checked> 
     <datetimestamp>2016-10-18T08:13:20-06:00</datetimestamp> 
    </data> 
</root> 

: -

DECLARE @XData XML 
DECLARE @doc INT 

DECLARE @TempXML TABLE 
(
    checked BIT, 
    datetimestamp DATETIME, 
) 

SELECT @XData = Data FROM Table1 WHERE ID = @ItemId 

EXEC sp_xml_preparedocument @doc OUTPUT, @XData 

INSERT INTO @TempXML(checked,datetimestamp) 
    SELECT * FROM OPENXML (@doc, '/root/data',1) 
    WITH (
    checked BIT 'checked', 
    DateTimeStamp DATETIME 'datetimestamp', 
    ) 

날짜 시간은 XML에서 UTC로 저장됩니다. 위의 SP에서는 xml 데이터를 openXML을 사용하여 읽고 임시 테이블에 데이터를 저장하고 있습니다. 삽입하는 동안 UTC datetime을 현지 시간으로 변환해야합니다. 어떻게해야합니까? 코드의 라인에 따라 은 현지 시간대 완벽하게 에 UTC로 변환하지만 OPENXML와 함께 사용하는 방법을 알아낼 수 없습니다 : -

SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), MyTable.UtcColumn) 
     AS ColumnInLocalTime 
FROM MyTable 

답변

0

당신이 당신의 insert 문에 열을 지정할 수 없습니다?

INSERT INTO @TempXML(checked,datetimestamp) 
    SELECT checked 
      ,DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), datetimestamp) as datetimestamp 
    FROM OPENXML (@doc, '/root/data',1) 
    WITH (
    checked BIT 'checked', 
    DateTimeStamp DATETIME 'datetimestamp' 
    )