我需要将 xml 列中的时间戳元素转换为 SQL Server 2019 中的 UTC 时间。
CREATE TABLE TestTable
(
Id INT IDENTITY(1,1) NOT NULL,
Data XML NOT NULL
);
INSERT TestTable (Data) VALUES ('<root>
<id>1</id>
<timestamp>2024-08-20T10:55:37+10:00</timestamp>
</root>');
我想将时间戳更改为“2024-08-20T00:55:37Z”。我正在使用“Data.modify('replace value of'”,但找不到新值基于旧值而不是简单字符串替换的示例。
有几种方法可以做到这一点。我使用几个
APPLY
s 从 XML 中获取时间戳的值,然后使用 将其更改为 UTCAT TIME ZONE
。然后,您可以使用modify
来UPDATE
使用该 XML 值sql:column
:这将产生以下 XML:
为什么不使用 datetimeoffset 进行存储:
按照建议,查询速度会更快: