SQL-запрос, Дата возврата результатов dbdate — 7 дней с выбранной даты

#sql #sql-server

#sql #sql-сервер

Вопрос:

Мне нужно вернуть результаты из таблицы, в которой выбранная дата, в данном случае 2021-12-06, находится менее чем в 7 днях от даты окончания

 SELECT EndDate  FROM MYtable  WHERE ('2021-12-06' BETWEEN EndDate AND DATEADD(day, - 7, EndDate))   

Приведенный выше код не работает/не возвращает результаты, но дает вам представление о том, где я нахожусь в данный момент, должен ли я использовать метод between для получения этих результатов или есть лучший способ сделать это. В любом случае, любой совет, который вы можете дать, будет высоко оценен.

Комментарии:

1. Какие СУБД вы используете? (Приведенный выше запрос относится к конкретному продукту.)

2. Тип данных даты окончания столбца?

3. MSSQL, Тип данных идентификатора даты окончания = ДАта

4. ВЫБЕРИТЕ ДАТУ ОКОНЧАНИЯ ИЗ МОЕЙ ТАБЛИЦЫ, ГДЕ (‘2021-12-06’ МЕЖДУ ДАТОЙ ОКОНЧАНИЯ И ДАТОЙ(день, — 7, дата окончания)) Извините, скопировал неправильный запрос, это моя текущая версия

5. Эй, отредактируйте свой вопрос вместо этого, чтобы иметь текущую версию.

Ответ №1:

я думаю, что это сработает для вас DATEADD нуждается в параметре day, и использование BETWEEN лучше таким образом:

 SELECT enddate  FROM Mytable WHERE enddate BETWEEN '2021-12-06' AND DATEADD(day,-7,'2021-12-06');  

Комментарии:

1. Привет, спасибо, но это вернет результаты только в том случае, если дата окончания находится между выбранной датой и выбранной датой -7. Что мне нужно, так это вернуть результат, в котором выбранная дата находится между датой окончания и датой окончания -7 дней.

2. @DaveHughes Это решение будет работать, просто измените -7 его на 7

3. ВЫБЕРИТЕ ДАТУ ОКОНЧАНИЯ ИЗ МОЕЙ ТАБЛИЦЫ, ГДЕ (‘2021-12-06’ МЕЖДУ ДАТОЙ(день, — 7, дата окончания) И датой окончания) Это был ответ, который я искал, я наткнулся на него по ошибке, но спасибо за помощь

Ответ №2:

 SELECT EndDate  FROM Mytable  WHERE ('2021-12-06' BETWEEN DATEADD(day, - 7, EndDate) AND EndDate)