Все, что ожидалось в течение последних 10 дней, должно быть получено, если не игнорировать их в SQL.

Мне нужно игнорировать данные, которые должны быть получены в течение последних 10 дней, если не игнорировать их. Я не уверен, как написать это в SQL. У меня есть столбец EXPDATE. Я не уверен, что мое утверждение правильное или нет.

думаю логика должна быть такой

Ожидаемая дата + 10 дней ‹ Сегодняшняя дата?

GETDATE() < DATEADD(DAY, +10, GETDATE()) - Я нашел это в Интернете, но где я могу подключить свой столбец ExpectedDate?

Заранее спасибо!!


person learningsql    schedule 12.10.2018    source источник
comment
Я не уверен, что мое утверждение правильное или нет. Где твой оператор SQL?   -  person Eric    schedule 13.10.2018


Ответы (1)


Вы можете сделать это любым способом. Сначала добавьте 10 дней к EXPDATE и сравните его с сегодняшней датой, как показано ниже.

select * from MyTable Where DATEADD(DAY, 10, EXPDATE) < GETDATE()

С другой стороны, вы можете вычесть 10 дней из сегодняшнего дня и сравнить его с EXPDATE.

select * from MyTable Where DATEADD(DAY, -10, GETDATE()) > EXPDATE

Я бы предпочел 2-й и использовал бы переменную для расчета 10-дневной даты назад, поскольку она постоянна, а затем использовал бы ее в предложении where, как показано ниже.

Declare @myDate datetime
SET @myDate = DATEADD(DAY, -10, GETDATE())
select * from MyTable Where @myDate  > EXPDATE
person Vinit    schedule 12.10.2018
comment
Большое спасибо за ответ. Теперь у меня другая ошибка из-за разницы типов. GETDATE — это дата и время, а EXPDATE — десятичное число. Я преобразовал оба в varchar. - person learningsql; 17.10.2018
comment
в чем ошибка? и поделитесь образцом значения EXPDATE. Вам просто нужно преобразовать EXPDATE в дату и время, используя подходящий формат, основанный на формате EXPDATE. - person Vinit; 17.10.2018