Получение записей по месяцу и числу

у меня есть таблица событий events, с полем event_date в формате DATE

В нём хранится дата в следующем формате:

1999-09-19 (дата с годом)
09-19 (дата без года)

Мне необходимо получить ближайшие события(которые произойдут в течение следующих 14 дней) к сегодняшнему дню.

Сделал такой запрос, но он работает не так как планировал

start = str(datetime.now().date().strftime("%m-%d"))
end = str((datetime.now().date() + timedelta(days=14)).strftime("%m-%d"))

"SELECT * FROM events WHERE event_date >= ? and event_date <= ?", (start, end)

Помогите пожалуйста с написанием запроса.


Ответы (1 шт):

Автор решения: AivanF.

К сожалению, в SQLite функций для работы с датами почти нет (пруф: пустая документация), как и возможности объявлять пользовательские функции, поэтому все прямые решения будут очень костыльные и громоздкие (вручную разбивать дату-строку на части и считать дни до текущей даты, с учётом разных длин месяцев и т.п..). Я бы предложил либо выгружать релевантные события в Питон и фильтровать события там с использованием модуля datetime, если объём данных небольшой, либо использовать более функциональную СУБД со встроенными функциями по обработке дат – например, в MySQL и PostregSQL существует готовая функция DATEDIFF.

→ Ссылка