在日常使用中難免會與XML打交道,其中一個常用的格式就是日期了。 交互的時候通常有下麵2種方式 其中T1 的時間格式是我們平常比較容易看到的。但是也有小部分的時候會遇到T的時間格式,後面帶上時區的時候,就會在取Datetime的時候直接轉換成0時區的時間,所以 這時候如果需要將T和T1 都轉成一致的 ...
在日常使用中難免會與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
以為這種格式我們平時比較少用到,我也是偶爾遇到才發現,今天和大家分享一下~希望對大家有幫助
最後祝~新年快樂~工作順利