0

数据存储为 XML(示例):-

<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>

我正在使用 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 以 UTC 格式存储在 XML 中。在上面的 SP 中,我正在使用 openXML 读取 xml 数据并将数据存储在临时表中。我需要在插入时将 UTC 日期时间转换为本地时间。我怎样才能做到这一点。以下代码行将 UTC 完美转换为本地时区,但无法弄清楚如何将其与 Openxml 一起使用:-

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

1 回答 1

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'
    )
于 2016-10-19T11:44:15.660 回答