#sql #date-range #days #exasolution
#sql #диапазон дат #дни #exasolution
Вопрос:
У меня есть таблица, похожая на:
VALID_FROM | VALID_TO | stock
2020-10-01 | 2020-10-02 | 10
2020-10-02 | 2020-10-04 | 9
2020-10-04 | 2020-10-08 | 5
... | ... |
2020-12-15 | 2020-12-16 | 0
Мне нужно установить диапазон дат для определенной даты из:
‘2020-11-26’ — 2 недели / 14 дней ‘2020-11-26’ 2 недели / 14 дней
Я мог бы просто использовать фиксированные даты, например
SELECT *
FROM table AS t
WHERE t.VALID_FROM >= '2020-11-12'
AND t.VALID_TO <= '2020-12-10'
Но диапазон дат может измениться, и я хотел бы просто добавить дни или недели без необходимости каждый раз использовать календарь.
Итак, что-то вроде:
SELECT *
FROM table AS t
WHERE t.VALID_FROM >= '2020-11-26' - INTERVAL '14' DAY
AND t.VALID_TO <= '2020-11-26' INTERVAL '14' DAY
Но это дает мне сообщение об ошибке:
Функция не поддерживается: невозможно выполнить приведение из ИНТЕРВАЛА DAY (2) ОТ ВТОРОГО (3) до ДВОЙНОГО
Комментарии:
1. Вы можете попробовать DATEADD(d, -14, ‘2020-11-26’) и DATEADD(d, 14, ‘2020-11-26’) с предложением BETWEEN .
Ответ №1:
Попробуйте использовать add_days()
функцию:
WHERE t.VALID_FROM >= add_days('2020-11-26', -14) AND
t.VALID_TO <= add_days('2020-11-26', -14)
Комментарии:
1. Спасибо, до сих пор не знал о add_days().