Я храню даты как String
в моей базе данных в этом формате:
YYYY-MM-DD HH:MM:SS
который является одним из поддерживаемых форматов (http://www.sqlite.org/lang_datefunc.html). Теперь я хочу сравнить эти сохраненные даты (ну, строки) с другими датами. Мои даты хранятся в столбце column_date
, поэтому я пытаюсь это сделать:
SELECT * FROM MyTable
WHERE
(Date(column_date) >= Date (2000-01-01) AND Datetime(column_date) <= Datetime (2050-01-01))
Как я прочитал документацию, The date and time functions use a subset of IS0-8601 date and time formats. The date() function returns the date in this format: YYYY-MM-DD.
, поэтому, я полагаю, я делаю это правильно - я создаю дату из сохраненной строки и сравниваю ее с датой, созданной из других строк.
Но это не работает, даже когда column_date
является датой с этого года, и поскольку вы можете видеть, что даты начала и окончания очень доброжелательны. Пробовал также это (используется дата-время вместо даты):
SELECT * FROM MyTable
WHERE
(datetime(column_date) >= Date (2000-01-01) AND datetime(column_date) <= Datetime (2050-01-01))
и это (используйте между вместо <= и > =)
SELECT * FROM MyTable
WHERE
(Date(column_date) between Date (2000-01-01) AND Datetime (2050-01-01))
и всех других возможных комбинаций. Что, черт возьми, я делаю не так, я глуп, или документальная ложь, или я пропустил что-то очень важное? Попытка найти решение несколько часов, но ничего не работает...