Jul 08, 2016 11:31
Упражняясь с Node.js столкнулся с одной интересной особенностью базы данных sqlite.
У меня была простая табличка, в которой были фамилии, даты и прочий, необходимый обвес.
Нужно было выбрать диапазон дат. Задача простая, between и всего делов.
select * from myTable where date between '01.06.2016' and '30.06.2016'
В результате выполнения этого запроса из базы ничего не было выбрано.
Что же нам теперь делать???? Где же мы ошиблись???
Гугл говорит, что sqlite хранит дату в виде строки и для подобных запросов необходимо использовать функцию date(), чтоб привести строки к типу дата и расслабиться.
Делаем!
select * from myTable where date(date) between date('01.06.2016') and date('30.06.2016')
и в результате - опять пустая выборка
Опять гуглим, пробуем юзать функции sqlite, ничего не получаем, пробуем приводить формат даты, все нифига. Гуглим, пробуем, гуглим...
Потом смотрим мануал sqlite, смотрим на свою таблицу... и офигеваем.
Я забиваю дату в привычном мне формате DD.MM.YYYY а в мануале рекомендуют YYYY-MM-DD.
Да чтоб тебя - приводим все введенные даты к рекомендуемому формату и делаем
select * from myTable where date between '2016-06-01' and '2016-06-30'
ВСЕ ОТЛИЧНО РАБОТАЕТ.
Вот так вот я слегонца потерял целый день, вот так вот не внимательно читать мануалы.
Естественно, после приведения формата дат перестал работать crud, но это уже мелочи. Я то уж чуть не разочаровался в sqlite как в пригодной базе вообще.
node.js,
sqlite,
js