У меня есть 3 записи, добавленные в мою базу данных, одно из полей содержит дату, сохраненную в виде строки, когда я запрашиваю «SELECT * FROM 'TABLE'», я получаю все 3 из них, затем, когда я печатаю их соответствующую дату, я получаю , в этом примере
2019-5-4 14:20:00
2019-6-4 14:20:00
2019-7-4 14:20:00
Но когда я пытаюсь использовать «SELECT * FROM 'TABLE' WHERE DATE BETWEEN '2019-4-1' И '2019-7-10'», запрос содержит первые два результата, но не последний. Он будет содержать 3-й, когда я изменю месяц с 7 на 8 или когда день во второй дате изменится с двузначного на однозначный, поэтому все от 4 до 9, вместо 2019-7-10 будет 2019 -7-9.
Как я могу получить все результаты, используя двузначные числа в качестве дней во второй дате?
2019-04-01
вместо2019-4-1
04.05.2019DATE()
— это имя функции, которое следует использовать, если вы не сравниваете метки времени (час дня, только дату). Если имя столбцаsignup_date
, следует использоватьDATE(signup_date)
. Если имя столбцаdate
, следует использоватьDATE(date)
. Если, конечно, SQLite позволяет вам называть столбец зарезервированным словом с его собственным синтаксисом, напримерDATE
. Разрешено или нет в SQLite, это запрещено в других движках баз данных и является плохой и опасной привычкой, ИМХО. 04.05.20192019-04-01
, а как2019-4-1
. Теперь, когда я изменил его, все работает. Похоже, когда вы пропускаете0
перед числами дня и месяца, это работает, но не совсем так. 04.05.2019DATE('2019-7-10')
возвращает NULL. 04.05.2019DATE('2019-07-10')
работает, как и должно быть написано. Пожалуйста, прочитайте мой ответ ;-) 04.05.2019