У меня есть четыре кнопки на приложении Android, которое я делаю. Каждая кнопка запрашивает базу данных SQLite и захватывает записи на основе даты. (Кнопки «Сегодня», «Неделя», «Месяц», «Все»)SQLite не возвращает правильные записи на основе даты
Дата хранится как DATETIME в моей таблице, и я также запрашиваю ее с датой. Все работает хорошо, пока я не хватаю все, что было сделано раньше месяца.
Пример
Дата сегодняшними является 29 июня 2016
Я создаю запись на 16 июня 2016 года в моей базе данных SQLite и он хранит успешно. Я создаю еще одну запись 27 июня 2016 года и она успешно хранится.
Теперь я нажимаю кнопку «Сегодня» и возвращает 0 записей. (Поправьте)
жмет кнопку недели и вернуть 1 запись (Correct - Создана 27 июня)
жмет кнопку месяца и вернуться 0 записей. (. Некорректное я должен получать 2 записей)
Кодекс
Это запрос, который я использую для моей базы данных:
String queryString = "SELECT * FROM job_quote_lookup WHERE created_at >= '" + date + "' ORDER BY created_at ASC"
'дата' рассчитывается следующим образом:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -31);
Date fromDate = cal.getTime();
date = dateFormat.format(fromDate);
(31 представляет собой максимально возможное количество дней в месяце)
Кажется, что проблема возникает, когда дата вернется месяц. Если я удалю 20 дней вместо 31, дата будет «9 июня», и я получу ОБА записи, как я должен. Но если дата будет в мае, я получу 0 записей.
Другие queryStrings я попробовал
String queryString = "SELECT * FROM job_quote_lookup WHERE created_at >= date('now','-31 days') ORDER BY created_at ASC"
Это не похоже, не работает?
Я все еще новичок в Android, поэтому извиняюсь, если это плохой вопрос. Я гугл, но не нашел ничего, что могло бы помочь.
UPDATE: Extra Info
Вот некоторые дополнительный код, который может быть более полезным
DateFormat используется для временных записей штемпеля в мой SQLite является:
private String getDateTime() {
SimpleDateFormat dateFormat = new SimpleDateFormat(
"dd/MM/yyyy - HH:mm", Locale.getDefault()); //"yyyy-MM-dd HH:mm:ss" - "dd-MM-yyyy HH:mm:ss"
Date date = new Date();
return dateFormat.format(date);
}
Формат даты используется, когда я обращаюсь к моей базе данных:
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Я не уверен, что это правильно, однако мои аргументы в пользу отказа от «HH: mm» были вызваны тем, что опция «Сегодня» не работает правильно, так как она вернет все большее, чем текущее время (что, очевидно, ничего в сроки тиснения)
Невозможно решить ... Завершение преобразования моей базы данных DATETIME в INTEGER и сохранение даты в миллисекундах, а затем преобразование формата даты и миллисекунд в запрос и отображение информации.
Я изменил соответствующий код, но я все еще возвращаю 0 записей. Используя пример выше для записей и той же строки запроса, это вывод строки в мой Logcat: E/QuotesList: SELECT * FROM job_quote_lookup WHERE created_at> = '29/05/2016 'ORDER BY created_at ASC – Noodelz
Ваш формат даты неверен для MySQL, qv мой обновленный ответ. –
Я сделал редактирование на свое оригинальное сообщение, чтобы предоставить дополнительную информацию, которая, надеюсь, будет полезной :) Я попытался переключить формат даты, чтобы соответствовать «yyyy-MM-dd», но он возвратил ВСЕ записи, независимо от того, какая кнопка была нажат. :( – Noodelz