代码之家  ›  专栏  ›  技术社区  ›  PineNuts0

SQL Server:创建新列,从今天的日期减去日期列

  •  2
  • PineNuts0  · 技术社区  · 7 年前

    已更新

    根据对我最初问题的回答,我将代码调整为:

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

    下面是我收到的错误:

    操作数数据类型datetime对于减号运算符无效

    DTBUILD列中的值如下: 1999-11-29 00:00:00.000

    我想在SQL Server中创建一个名为 AGE_NO_DAYS 这是今天的日期减去datetime列,该列称为 dtbuilt .

    下面是我尝试过的代码,但它出错了。

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

    这是我得到的错误:

    列名“dtbulit”无效。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Gordon Linoff    7 年前

    您的代码中有一个拼写错误,您应该使用 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));