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

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

交互的時候一般有下面2種方式spa

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

其中T1 的時間格式是咱們日常比較容易看到的。可是也有小部分的時候會遇到T的時間格式,後面帶上時區的時候,就會在取Datetime的時候直接轉換成0時區的時間,因此code

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的格式的話,能夠參考官方文檔裏面的同樣blog

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

裏面提到這裏能夠轉換成DateTimeOffset 這種格式,而後再轉換成DateTime的格式,便可完成這個操做io

 最終就是2種均可以轉成一樣的時間格式了。ast

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

 

覺得這種格式咱們平時比較少用到,我也是偶爾遇到才發現,今天和你們分享一下~但願對你們有幫助function

最後祝~新年快樂~工做順利class

相關文章
相關標籤/搜索