SQLlite запрос для получения данных между 2 датами не работает - PullRequest
1 голос
/ 09 декабря 2011

Я использую дату sqlite в Android и хочу отфильтровать дату между двумя датами.Я не понимаю, что, черт возьми, не так с моим запросом?Это не дает ошибки, но и не дает результата. Я думаю, что я делаю что-то не так с функцией между датой и датой

SELECT * FROM trip_mark WHERE file_type = 2 
AND create_time BETWEEN date('2011-11-08 00:00:00') AND date('2011-11-10 00:00:00') 

Ниже приведена структура моей таблицы.Я знаю, что в моей таблице есть дата, я использую браузер SQLite и проверяю данные в БД.

CREATE TABLE `trip_mark` (
`file_id` INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL,
`local_path` varchar(100) DEFAULT NULL ,
`file_type` int(11) DEFAULT NULL,
`import_date` datetime DEFAULT NULL ,
`create_time` datetime DEFAULT NULL ,
`isSyncAvailable` int(11) DEFAULT '1' ,
`syncDate` datetime DEFAULT NULL ,
`isSynced` int(11) DEFAULT '0' ,
`longitude` float DEFAULT NULL ,
`altitude` float DEFAULT NULL ,
`place_logical_name` varchar(150) DEFAULT NULL ,
`file_note` varchar(250) DEFAULT NULL )

Вот таблица текущих данных

"1","/sdcard/TripMark_1323375027.jpg","2","2011-11-09 01:10:37","2011-11-09 01:10:37","1","null","0","-1","-1","Unknown Location","");
"2","/sdcard/TripMark_1323375053.jpg","2","2011-02-09 01:11:01","2011-02-09 01:11:01","1","null","0","-1","-1","Unknown Location","");
"3","/sdcard/TripMark_1323375260.jpg","2","2011-11-09 01:14:29","2011-11-09 01:14:29","1","null","0","-1","-1","Unknown Location","sdfas");

Я хочу выполнить этот запрос

SELECT * FROM trip_mark WHERE file_type = 2 
AND create_time BETWEEN date('2011-11-08 00:00:00') AND date('2011-11-10 00:00:00') 

и ожидаемые выходные данные

"1","/sdcard/TripMark_1323375027.jpg","2","2011-11-09 01:10:37","2011-11-09 01:10:37","1","null","0","-1","-1","Unknown Location",""
"3","/sdcard/TripMark_1323375260.jpg","2","2011-11-09 01:14:29","2011-11-09 01:14:29","1","null","0","-1","-1","Unknown Location","sdfas"

Ответы [ 4 ]

3 голосов
/ 09 декабря 2011

SQLite не имеет типов данных datetime, float, int, varchar. Смотрите список доступных типов здесь:
http://www.sqlite.org/datatype3.html

2 голосов
/ 09 декабря 2011

У меня возникла такая же проблема.То, что я обнаружил, что дата функция вызывает проблемы.Поскольку строка в '' уже является датой.Я удаляю функцию даты из запроса, и она работала для меня.Вы также можете попробовать этот запрос.

SELECT * FROM trip_mark WHERE file_type = 2 
AND create_time BETWEEN '2011-11-08 00:00:00' AND '2011-11-10 00:00:00' 
0 голосов
/ 29 мая 2018

ВЫБРАТЬ * ИЗ транзакции ГДЕ транзакцияДата между «2018-04-29» и «2018-05-29» LIMIT 20;

попробуйте этот запрос, и он будет работать как вау :)

Пожалуйста, проверьте вопрос

Фильтр не работает на дату

0 голосов
/ 09 декабря 2011

Тот факт, что ваш запрос не показал никакой ошибки, означает, что это правильно.Удостоверьтесь, что в вашей базе данных есть запись с file_type = 2.

Редактировать: учитывая данные примера.Вы храните строку в вашем file_type.Удалите кавычки на file_type.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...