2017-12-03 109 views
2

修訂SQL服務器:創建新列,它是從今天的日期日期列的減法

基於我原來的問題的回答,我調整我的代碼如下:

SELECT 
    [OPCODE], [dtbuilt], 
    [EVENT_2], 
    [AGE_NO_DAYS] = DATEDIFF(day, - dtbuilt, CAST(GETDATE() As DATE)) 
INTO #df_EVENT5_6 
FROM #df_EVENT5_5 

下面是錯誤我「M接收:

操作數的數據類型的日期時間爲負操作無效

價值觀dtbuilt列如下:1999-11-29 00:00:00.000

我想創建一個新的列在SQL Server稱爲AGE_NO_DAYS就是今天的日期減去日期時間列名爲dtbuilt

下面是我試過的代碼,但它出錯了。

SELECT 
    [OPCODE], [dtbuilt], 
    [AGE_NO_DAYS] = CAST(GETDATE() As DATE) - [dtbulit]  
INTO 
    #df_EVENT5_6 
FROM 
    #df_EVENT5_5 

這是我的錯誤:

無效的列名稱dtbulit「。

+0

你能告訴我們表#df_events_5的表定義? – Ryu

+0

我該怎麼做? – PineNuts0

回答

1

你的代碼有拼寫錯誤,你應該使用dateadd()。嘗試:

SELECT [OPCODE], 
     [dtbuilt], 
     [AGE_NO_DAYS] = DATEDIFF(day, dtbuilt, CAST(GETDATE() As DATE))  
INTO #df_EVENT5_6 
FROM #df_EVENT5_5 

需要注意的是,你可以與計算列做到這一點:

alter table #df_EVENTS_5 add age_num_days as (DATEDIFF(day, dtbuilt, CAST(GETDATE() as DATE)); 
+0

運行您的建議代碼時出現以下錯誤:操作數數據類型datetime對於minus運算符 – PineNuts0

+0

@ PineNuts0無效。 。 。這就是爲什麼我將代碼切換到'dateadd()'的原因。 –

+0

我按照你的建議使用DATEADD ...但是錯誤是我在上面提到的那個 – PineNuts0