Reputation: 4337
Data is stored as XML (Sample):-
<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>
I am reading data using OpenXML:-
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',
)
DateTime is stored as UTC in XML. In above SP I am reading xml data using openXML and storing data in a temp table. I need to convert UTC datetime into local time while inserting. How can I do that. Following line of code convert UTC to local time zone perfectly but could not figure out how to use it with Openxml:-
SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), MyTable.UtcColumn)
AS ColumnInLocalTime
FROM MyTable
Upvotes: 0
Views: 613
Reputation: 12243
Can you not just specify your columns in your insert
statement?
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'
)
Upvotes: 0