Проблема, с которой вы сталкиваетесь, состоит в том, что дата («сейчас») вернется 2019-02-06, так как все строки в таблице начинаются с 0, и это значение меньше 2.
Вынеобходимо либо преобразовывать даты в тот же формат, что и другие, либо использовать тот же формат при хранении данных.
Сам SQLite имеет различный формат дат, который можно распознать и использовать, и рекомендуетсяиспользуйте один из них, так как это уменьшает необходимую сложность.
Строки времени Строка времени может иметь любой из следующих форматов:
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
DDDDDDDDDD
SQL как понятноПо SQLite - Функции даты и времени
Ниже приведено решение, которое можно использовать для преобразования столбца datestring в запросе: -
SELECT * FROM mytable WHERE substr(datestring,7,4)||'-'||substr(datestring,1,2)||'-'||substr(datestring,4,2) <= date('now');
Для преобразования существующих данных в распознанный формат можно использовать следующее: -
UPDATE mytable SET datestring = substr(datestring,7,4)||'-'||substr(datestring,1,2)||'-'||substr(datestring,4,2);
За этим может следовать исходный запрос
SELECT * FROM mytable WHERE datestring <= date('now');