Я, может казаться, не получаю надежные результаты запроса против sqlite базы данных с помощью строки даты и времени в качестве сравнения как так:
select *
from table_1
where mydate >= '1/1/2009' and mydate <= '5/5/2009'
как я должен обработать сравнения даты и времени с sqlite?
обновление: полем mydate является Тип данных datetime
Решение:
после функции даты и времени и наличия формата строки как YYYY-MM-DD HH:mm:ss я достиг хороших результатов следующим образом
select *
from table_1
where mydate >= Datetime('2009-11-13 00:00:00')
and mydate <= Datetime('2009-11-15 00:00:00')
SQLite не имеет выделенного времени даты типа , но имеет несколько функций времени даты . Следуйте форматам представления строк (на самом деле только форматам 1-10), понятным этим функциям (сохраняя значение в виде строки), и тогда вы сможете их использовать, плюс лексикографическое сравнение на строках будет соответствовать сравнению с датой (если только вы не пытаетесь сравнивать даты со временем или время с датой со временем, что в любом случае не имеет смысла).
В зависимости от того, какой язык вы используете, вы даже можете получить автоматическое преобразование. (Что не относится к сравнениям в SQL операторах, как в примере, но сделает Вашу жизнь проще)
.Вы также можете записать свои собственные пользовательские функции для работы с датами в выбранном Вами формате. SQLite имеет достаточно простой способ написания собственных пользовательских функций. Например, я написал несколько, чтобы добавить временные длительности вместе
. Для решения этой проблемы я храню даты как YYYYMMDD
. Таким образом,
где мидат >= '20090101' и мидат <= '20050505'
Все время просто работает. Вам может понадобиться только написать парсер для обработки того, как пользователи могут вводить свои даты, чтобы вы могли преобразовать их в YYYYMMDD
.