簡體   English   中英

在SQL中轉換日期時間格式

[英]Convert datetime format in sql

我正在嘗試轉換日期時間格式,轉換功能未返回正確的值。

這是我的數據

2015-09-07 07:00:01.0730000 +08:00 

我的查詢

 select convert(varchar(16), '2015-09-07 07:00:01.0730000 +08:00', 103)

但它返回

2015-09-07 07:00

預期結果

07/09/2015 07:00
select convert(varchar(100),cast('2015-09-07 07:00:01.0730000 +08:00' as datetime),103)
        +' '+
       SUBSTRING('2015-09-07 07:00:01.0730000 +08:00',12,5)

在文檔中解釋了這個奧秘:

當expression是日期或時間數據類型時,樣式可以是下表中顯示的值之一。 其他值被處理為0。 從SQL Server 2012開始,從日期和時間類型轉換為datetimeoffset時僅支持的樣式為0或1。所有其他轉換樣式均返回錯誤9809。

即,樣式基於表達式 ,而不基於目標數據類型。 我發現這有點違反直覺。 但是,這意味着103被忽略,因為參數是一個字符串而不是日期/時間數據類型。

因此,您只是將字符串轉換為字符串,所以什么也沒有發生。 這個示例可能更清楚:

select convert(varchar(255), 'hello world', 103)

這與datetime無關,它返回'hello world' (請參閱此處 )。

我發現這種奇怪的行為,但已記錄在案,因此該行為是正確的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM