2016-12-08 76 views
1

我是SQL Server的新手,並面臨一個問題。我試圖將yyyy-mm-dd格式的日期時間轉換爲dd/mm/yyyy將日期時間轉換爲SQL Server中的特定格式時出錯

使用下面的代碼更改格式,如果dd>12

Declare @LastTime datetime 
set @LastTime = '2015-06-12 12:08:18.690'  

select convert(varchar, @LastTime, 101) 

與其他輸出格式(from here)試過效果很好,如果dd <=12並引發錯誤The conversion of a varchar data type to a datetime data type resulted in an out-of-range value很好,但沒有運氣。有沒有辦法解決這個問題。我正在使用SQL Server 2008版本。這裏提到很多帖子,但沒有一個解決了這個問題。

在此先感謝。

回答

0

的誤差是set @LastTime = ...不會從您select convert(...)

這個錯誤是因爲你目前dateformatdmy

(默認語言隱式設置)如果你寧願只是改變你的dateformat然後set dateformat mdy;將允許你使用字符串2016-06-13(2016年6月13日)設置@LastTime

如果你不想惹改變你dateformat你可以指定你當你設置@LastTime,在這種情況下,與convert使用字符串,這將是121120作品也一樣)的風格。

rextester:http://rextester.com/CWZP33091

試試這個:

declare @LastTime datetime; 
set @LastTime = convert(datetime,'2015-06-12 12:08:18.690',121); 

select convert(varchar, @LastTime, 101); 
+0

合作。謝謝您的幫助。 – Sham

1

如果你只是想改變日期格式嘗試使用這樣的:
設置日期格式DMY 只是寫在屏幕上,選擇它並執行它,這將允許您以您想要的格式使用DATE類型,直到您關閉會話。 DATE類型將是一個字符串

0

看看MSDN文檔的演員和在https://msdn.microsoft.com/en-us/library/ms187928.aspx

轉換我猜風格103是您正確的。

給它

選擇轉換(VARCHAR,@LastTime,103)

我沒有機會檢查出來,現在一試,因爲我沒有一個MS SQL做服務器在手邊。

由於樣式101將'mm/dd/yyyy'轉換爲'dd/12',所以很明顯爲什麼dd> 12會導致錯誤,因爲convert會試圖將'mm'轉換爲有效值從1到12的月份,從1-31。

希望幫助

保重

安德烈亞斯

相關問題