在平常使用中不免會與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