将本地日期时间从xml转换为sql中的日期时间
我通过xml接收一些数据,这些数据将被插入到关联的SQL表中。我用来插入数据的方法是在sql中查询XML,并根据需要进行批量插入 我所遇到的问题是,该日期从未被识别为有效日期,因此总是返回到默认日期 这里是XML的一个片段,其中包含提供的日期将本地日期时间从xml转换为sql中的日期时间,sql,sql-server,xml,Sql,Sql Server,Xml,我通过xml接收一些数据,这些数据将被插入到关联的SQL表中。我用来插入数据的方法是在sql中查询XML,并根据需要进行批量插入 我所遇到的问题是,该日期从未被识别为有效日期,因此总是返回到默认日期 这里是XML的一个片段,其中包含提供的日期 <Upload xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <DeviceID
<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>
...
- 注意:@UploadDate实际上是SQL getDate()中的值,即我的默认值
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);
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