我已经在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
。
答案 0 :(得分:4)
在错误消息date is incompatible with int
中指出了问题所在。您正在尝试将一个整数添加到日期字段。
MalFn_date+3 as MalFn_delay,
您需要将整数转换为时间范围,以便可以将其添加到日期。 SQL不知道3
代表什么;秒,分钟,天?
您可以使用DATEADD()
函数在SQL Server中执行此操作。例如,如果您想增加3天,
DATEADD(day, 3, MalFn_date)