2016-03-08 537 views
0

我有一個表格,在[DATE_READ]列中存儲了許多日期類型爲十進制(9,0)的表格。我需要使用DATEADD這些條目,所以我用下面的代碼將其轉換爲varchar,然後將日期:SQL日期格式轉換YYYYMMDD

CASE WHEN A.[DATE_READ] <> 0 AND LEN(A.[DATE_READ]) = 6 
     THEN dateadd(day,1,CONVERT(date, '20' + CONVERT(varchar(8), A.[DATE_READ]), 112)) 
     WHEN LEN(A.[DATE_READ]) = 8 
     THEN dateadd(day,1,CONVERT(date, CONVERT(varchar(10), A.[DATE_READ]), 112)) 

我的問題是,只有日期顯示爲,如果我用110代替112在DATEADD函數中,只有前8個字符出現,因此它看起來像'2012-12-'而不是'20121205'。我不介意日期格式是什麼格式,但我需要讓我的代碼正常工作,以便我可以在輸出中看到日期。

回答

0

您錯過了最終轉換爲112.由於DATEADD返回日期,因此您需要格式化該日期以輸出。

CONVERT(VARCHAR(8), 
CASE 
    WHEN A.[DATE_READ] <> 0 AND LEN(A.[DATE_READ]) = 6 
    THEN dateadd(day,1,CONVERT(date, '20' + CONVERT(varchar(8), A.[DATE_READ]), 112)) 
WHEN LEN(A.[DATE_READ]) = 8 
    THEN dateadd(day,1,CONVERT(date, CONVERT(varchar(10), A.[DATE_READ]), 112)) END, 
112) 
+0

謝謝,這就是我需要的! – mdarr