2012-09-24 43 views
1

我想將此格式的字符串「PERIODyyyymmdd(例如:20120701)轉換爲SQLServer中的日期。 所以我用convert函數是這樣的:在SQLServer中將字符串轉換爲日期算術溢出

CONVERT(DATETIME,PERIOD,102); 

CONVERT(DATETIME,PERIOD,120); 

,但我發現了一個

SQLEXCEPTION:「算術溢出錯誤將表達式轉換爲 數據類型的datetime 「。

這是整個查詢,這裏有沒有其他的錯誤?

"SELECT ACTUAL_N_WELLS, TARGET_N_WELLS, [YTD ACTUAL] AS YTD_ACTUAL, [YTD BUDGET] AS YTD_BUDGET FROM DASH_GL_DRILLING_PERF WHERE ASSET_NAME='Bu Hasa Asset' AND (CONVERT(DATETIME,PERIOD,112) > (SELECT DATEADD(MONTH,-3,MAX(CONVERT(DATETIME,PERIOD,112))) from DASH_GL_DRILLING_PERF))"); 

什麼是做這種正確的方法是什麼?

回答

2

如果它是一個日期格式的問題,你會得到了超範圍的錯誤,因爲你得到溢出錯誤檢查不使用整數

CONVERT(DATETIME, 20120701, 102) - overflow 
CONVERT(DATETIME,'20120701',102) - ok 
+0

我沒有使用的價值,我使用的列即名「 PERIOD「.. –

+1

而它的一個varchar? –

+0

謝謝先生!這確實是問題,它不是vchar。數據類型更改爲vchar時,問題得以解決。 –

3

因爲它是年月日,你需要

CONVERT(DATETIME, PERIOD, 112) 

退房CAST AND CONVERT

+0

先生,這個問題仍然在繼續,我編輯的問題,包括整個查詢..謝謝.. –

0
select Convert(date,CONVERT(DATETIME,'20120701',102)); 

這將日期的形式給定的週期轉換在。

0
declare @dt varchar(100)='20120701' 
select convert(datetime,@dt)