gpt4 book ai didi

sql - 将本地日期时间从 xml 转换为 sql 中的日期时间

转载 作者:数据小太阳 更新时间:2023-10-29 02:05:11 26 4
gpt4 key购买 nike

我正在通过 xml 接收一些数据,这些数据将被插入到关联的 SQL 表中。我用来插入数据的方法是在 sql 中查询 XML 并根据需要进行批量插入。

我遇到的问题是日期永远不会被识别为有效日期,因此总是回到默认日期。

这里是一段带有日期的 XML

<Upload xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DeviceID>0008E02B66DD_</DeviceID>
<DeviceType>03.20</DeviceType>
<FarmID>2</FarmID>
<UploadDate>0001-01-01T00:00:00</UploadDate>
<Sessions>
<SessionID>99</SessionID>
<RecordedDate>2012-02-03T13:00:00+13:00</RecordedDate>
<Readings />
</Sessions>

...

这是我处理它的 SQL 代码片段

Select
(CASE
WHEN ISDATE(s.value('(RecordedDate)[1]', 'varchar(50)')) = 1 THEN s.value('(RecordedDate)[1]', 'varchar(50)')
ELSE @UploadDate
END) DateOfMeasurement
INTO #Session
FROM
@XMLData.nodes('/Upload') AS Upload(u)
CROSS APPLY
u.nodes('./Sessions') Sessions(s)
  • 注意:@UploadDate 实际上是 SQL getDate() 的值,即我的默认值

我要将其插入到数据库中的字段是一个日期时间字段

问题:

我想将 XML 中收到的日期插入到我的 SQL 数据库中的日期时间字段中,即 2012-02-03T13:00:00+13:00。有没有办法在 SQL 中很好地转换它?

最佳答案

declare @XMLData xml = '
<Upload xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DeviceID>0008E02B66DD_</DeviceID>
<DeviceType>03.20</DeviceType>
<FarmID>2</FarmID>
<UploadDate>0001-01-01T00:00:00</UploadDate>
<Sessions>
<SessionID>99</SessionID>
<RecordedDate>2012-02-03T13:00:00+13:00</RecordedDate>
<Readings />
</Sessions>
</Upload>';

select T.N.value('substring((RecordedDate/text())[1], 1, 19)', 'datetime'),
T.N.value('(RecordedDate/text())[1]', 'datetime'),
T.N.value('(RecordedDate/text())[1]', 'datetimeoffset')
from @XMLData.nodes('/Upload/Sessions') as T(N);

结果:

2012-02-03 13:00:00.000 
2012-02-03 00:00:00.000
2012-02-03 13:00:00.0000000 +13:00

关于sql - 将本地日期时间从 xml 转换为 sql 中的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14636287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com