2017-12-03 108 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