如何更正SELECT语句中的错误

时间:2019-07-04 03:46:53

标签: sql-server

我已经在SQL Server 2014上进行了编码:

create table CriticalStop
(
    SAP_ID int not null,
    Affected_ID char(15) not null,
    FnLoc_ID char(20) not null,
    MalFn_date date,
    MalFn_time time,
    MalFnHour_dur float,
    MalFnMajor char(15),

    primary key(SAP_ID)
);
go

insert into CriticalStop(SAP_ID, Affected_ID, FnLoc_ID, MalFn_date, MalFn_time, MalFnHour_dur, MalFnMajor)
values (10045929, 'TN.211-HC1', 'TN.211-HC1', convert(date,'20190101'), convert(time,'18:29:00.290'), 3.52, 'Process')

他们还好。但是当我使用下面的语句时,SQL Server 2014引发了错误

select 
    SAP_ID,
    Affected_ID,
    FnLoc_ID,
    MalFn_date+3 as MalFn_delay,
    MalFn_time,
    MalFnHour_dur,
    MalFnMajor
from 
    CriticalStop;

错误:

  

Msg 206,第16级,状态2,第2314行
  操作数类型冲突:日期与int不兼容。

第2314行指向上面的SELECT语句。我不明白为什么在第MalFn_date+3 as MalFn_delay行会发生此错误。我删除了+3,结果还可以,但是我需要更改日期。我该如何使用+3

1 个答案:

答案 0 :(得分:4)

在错误消息date is incompatible with int中指出了问题所在。您正在尝试将一个整数添加到日期字段。

MalFn_date+3 as MalFn_delay,

您需要将整数转换为时间范围,以便可以将其添加到日期。 SQL不知道3代表什么;秒,分钟,天?

您可以使用DATEADD()函数在SQL Server中执行此操作。例如,如果您想增加3天,

DATEADD(day, 3, MalFn_date)