Как исправить ошибку в операторе SELECT - PullRequest
0 голосов
/ 04 июля 2019

Я написал на 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;

Ошибка:

Сообщение 206, Уровень 16, Состояние 2, Строка 2314
Столкновение с типом операнда: date несовместима с int.

Строка 2314 указывала на оператор SELECT выше.Я не понимаю, почему эта ошибка происходит в строке MalFn_date+3 as MalFn_delay.Я удаляю +3, результат в порядке, но мне нужно изменить дату.Как мне заставить его работать с +3.

1 Ответ

4 голосов
/ 04 июля 2019

В сообщении об ошибке указано, в чем проблема, date is incompatible with int.Вы пытаетесь добавить целое число в поле даты.

MalFn_date+3 as MalFn_delay,

Вам необходимо преобразовать целое число в диапазон времени, чтобы его можно было добавить к дате.SQL понятия не имеет, что представляет 3;секунды, минуты, дни?

Вы можете использовать функцию DATEADD(), чтобы сделать это в SQL Server.Например, если вы хотите добавить 3 дня,

DATEADD(day, 3, MalFn_date)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...