我有一个存储在 SQL Server 表 xml 列中的 xml 文档,该文档的日期字段中的时间不准确
我想将文档中的所有日期和时间(SaleDateTime、LineStartTime、LineEndTime)值更新 15 秒,例如,2012-02-01T00:07:50 变为 2012-02-01T00:08 :05(说来话长,为什么要这样;这不由我掌控)。可以有 1 到多笔交易,每笔交易可以有 1 个或多个行条目。
我已经尝试使用 DATEADD 进行 OPENXML、修改方法等,但无法得到正确的结果。我不知道该怎么做。任何帮助表示赞赏。提前致谢!!
示例如下
CREATE TABLE XMLTable (doc xml);
INSERT INTO XMLTable (doc)
VALUES
(
'<?xml version="1.0" encoding="UTF-8"?>
<Root>
<Transaction>
<SaleID>1</SaleID>
<Sale>
<SaleDateTime>2012-02-01T00:07:00</SaleDateTime>
<LineItem>
<Line>1</Line>
<LineStartTime>2012-02-01T00:07:00</LineStartTime>
<LineEndTime>2012-02-01T00:07:00</LineEndTime>
<Amount>13.50</Amount>
</LineItem>
</Sale>
</Transaction>
<Transaction>
<SaleID>2</SaleID>
<Sale>
<SaleDateTime>2012-02-01T00:11:00</SaleDateTime>
<LineItem>
<Line>1</Line>
<LineStartTime>2012-02-01T00:11:00</LineStartTime>
<LineEndTime>2012-02-01T00:11:00</LineEndTime>
<Amount>13.50</Amount>
</LineItem>
<LineItem>
<Line>2</Line>
<LineStartTime>2012-02-01T00:11:00</LineStartTime>
<LineEndTime>2012-02-01T00:11:00</LineEndTime>
<Amount>5.22</Amount>
</LineItem>
</Sale>
</Transaction>
</Root>')
SELECT * FROM XMLTable
最佳答案
您可以使用修改
方法。例如,替换第一次出现的 SaleDateTime
:
declare @now datetime = getdate()
update XMLTable
set doc.modify('replace value of (/Root/Transaction/Sale/SaleDateTime/text())[1]
with sql:variable("@now")')
关于sql-server - 修改存储在 SQL Server 表中的 XML 文档中的日期字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16375379/