使用DateTimeOffset 對xml中的日期時間格式時區進行處理


在日常使用中難免會與XML打交道,其中一個常用的格式就是日期了。

交互的時候通常有下面2種方式

DECLARE @Doc XML='
<R>
   <T>2018-02-22+08:00</T> <T1>2018-02-22</T1> </R>
'

其中T1 的時間格式是我們平常比較容易看到的。但是也有小部分的時候會遇到T的時間格式,后面帶上時區的時候,就會在取Datetime的時候直接轉換成0時區的時間,所以

DECLARE @Doc XML='
<R>
    <T>2018-02-22+08:00</T>
    <T1>2018-02-22</T1>
</R>
'

SELECT @Doc.value('(R/T)[1]','DateTime') ,        
        @Doc.value('(R/T1)[1]','DateTime')    


2018-02-21 16:00:00.000 
2018-02-22 00:00:00.000

這時候如果需要將T和T1 都轉成一致的DateTime的格式的話,可以參考官方文檔里面的一樣

https://docs.microsoft.com/zh-cn/sql/t-sql/functions/cast-and-convert-transact-sql#date-and-time-styles

里面提到這里可以轉換成DateTimeOffset 這種格式,然后再轉換成DateTime的格式,即可完成這個操作

 最終就是2種都可以轉成同樣的時間格式了。

DECLARE @Doc XML='
<R>
    <T>2018-02-22+08:00</T>
    <T1>2018-02-22</T1>
</R>
'

SELECT CONVERT(DATETIME,@Doc.value('(R/T)[1]','DateTimeOffset')),
       CONVERT(DATETIME,@Doc.value('(R/T1)[1]','DateTimeOffset'))


2018-02-22 00:00:00.000 
2018-02-22 00:00:00.000

 

以為這種格式我們平時比較少用到,我也是偶爾遇到才發現,今天和大家分享一下~希望對大家有幫助

最后祝~新年快樂~工作順利

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM