@HardX

Sqllite ерунда в ответе на запрос (дата/время)?

Вроде простейший запрос в БД
Select * from Base where DateTime between Date1 and Date2

Формат столбца DateTime - DATETIME
Формат записей в столбец 01-01-2001 00:00:00
Формат Date1 и Date2 01-01-2001 00:00:00

Проблема в том, что в ответ на запрос попадают лишние записи, которые вне искомого диапазона.

К примеру поиск между 26-10-2022 00:00:00 и 27-10-2022 23:59:59

Выдает с тем что нужно ещё и кучу записей с другими месяцами (26-09-2022 00:00:01 и т д.)

Как сформировать правильный запрос чтоб получить информацию именно от Date1 до Date2
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
@HardX Автор вопроса
Sqlite3 не поддерживает формат DateTime, данные сохраняются в формате string, поэтому придется прописывать дополнительный фильтр через strptime по вернувшимся данным из запроса.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@deliro
Как минимум, даты не хранят в таком формате, потому что в таком формате они не сравниваются лексикографически. Правильный формат - "2022-10-28 01:19". От большего к меньшему. Год, месяц, день. Размерность обязательна, нельзя написать 2022-2-15 и сказать, что это 15е февраля, только 2022-02-15, иначе у тебя все даты февраля станут позже месяцев с двузначными числами: октябрь, ноябрь, декабрь ("10", "11", "12" меньше "2" лексикографически). Только так между двумя датами в виде строк можно поставить знак «больше» или «меньше». Ну или хранить как timestamp тоже вполне вариант, меньше места займёт, но менее человекочитаемо
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы