2016-08-22 61 views
1

我有一個表格,其格式爲日期。 YYYYDDDSQL Server日期轉換問題

我需要將它們轉換爲YYYY-MM格式

例如,我有個約會2016003所以這應該成爲2016-01

同樣,2016055日期應該成爲2016-02

有沒有創建一個用戶函數來顯示這些的方法嗎?

謝謝

+2

請記住,您在當前表中的內容不是日期。它們是代表日期的數字。如果可能,應該停止將日期信息存儲爲數字或字符串。它們應該以日期或日期時間存儲。它會讓你的生活減少痛苦。 –

回答

3

我認爲最簡單的方法是將年份添加到年初。所以,要得到日期:

select dateadd(day, cast(right(col, 3) as int) - 1, 
       cast(left(col, 4) + '01-01' as date) 
      ) as dte 

然後,您可以根據需要進行格式化。例如,在SQL Server 2012+中,您可以使用format()

select format(dateadd(day, cast(right(col, 3) as int) - 1, 
         cast(left(col, 4) + '01-01' as date) 
        ), 'YYYYMM' 
      ) as yyyymm