Оператор SQL не возвращает значение между двумя датами - PullRequest
0 голосов
/ 18 июля 2011

Я пытаюсь выбрать конкретную дату между двумя датами. Форма, хранящаяся в БД, M/d/yyyy. Я пытаюсь передать две даты, и я хочу выбрать все данные столбца между этими двумя датами. Я знаю, что в БД есть данные, но для некоторых дат это ничего не приносит. Для некоторых дат это приносит данные, но для некоторых дат - данные.

Пример:

Когда я выбираю 7/10/2011 в качестве первой даты и в качестве второй даты 16.07.2011, она приносит данные. Но когда я выбираю 9/7/2011 в качестве первого свидания и в качестве второго свидания 16.07.2011, это ничего не приносит.

Вот мой запрос:

Cursor cursor = db.query(CONTACT_DATA, new String[] { "duration" },
                "date >= ? AND date <= ?",
                new String[] { firstDate, secondDate }, null, null, null);

Если кто-нибудь может помочь с этим вопросом. Спасибо!

Ответы [ 2 ]

0 голосов
/ 02 августа 2011

Я буду хранить даты в миллисекундах (формат эпохи), чтобы их было проще сравнивать. А при печати даты я буду конвертировать.

0 голосов
/ 18 июля 2011

SQLite не имеет собственного типа даты;это сравнивает ваши даты в виде строк.Вот почему, когда даты находятся в одном и том же месяце и году и имеют одинаковое количество цифр в дне, запрос работает, но это просто удача.

Обычно пользователи SQLite форматируют свои строки дат, используяФормат ISO-8601 (ГГГГ-ММ-ДД), который правильно сортируется в виде строк.

SQLite имеет функции даты - если ваши даты все правильно сформированы, вы можете использовать ихвместе с ltrim и rtrim для преобразования дат в формат, используемый в запросах.

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