#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)