Запрос в последний день, на прошлой неделе, в прошлом месяце SQLite
У меня есть эта таблица в моей базе данных Android SQLite:
CREATE TABLE statistics (subject TEXT, hits INTEGER, fails INTEGER, date DATE)
В поле date
сохраняется datetime('now', 'localtime')
в каждом регистре.
Теперь я должен запросить регистры последнего дня, прошлой недели и последнего месяца для отображения некоторых статистических данных.
Я пытался что-то вроде этого
SELECT Timestamp, datetime('now', '-1 week') FROM statistics WHERE TimeStamp < datetime('now', '-1 week')
и этот
SELECT * FROM statistics WHERE date BETWEEN datetime('now', localtime') AND datetime ( 'now', '-1 month')
и не работает: (
Как я могу это сделать?
Можно ли проверить, является ли запрос в порядке, просто отправив дату в эмуляторе виртуального устройства?
Спасибо!
Ответы
Ответ 1
Я нашел это решение. Надеюсь, это сработает для вас.
За последний день:
SELECT * FROM statistics WHERE date BETWEEN datetime('now', 'start of day') AND datetime('now', 'localtime');
За последнюю неделю:
SELECT * FROM statistics WHERE date BETWEEN datetime('now', '-6 days') AND datetime('now', 'localtime');
За последний месяц:
SELECT * FROM statistics WHERE date BETWEEN datetime('now', 'start of month') AND datetime('now', 'localtime');
Ответ 2
Этот код должен получить вас в предыдущем месяце
SELECT *
FROM statistics
WHERE date >= date('now','start of month','-1 month')
AND date < date('now','start of month')
Ответ 3
SELECT *
FROM statistics
WHERE date >= date('now','start of month','-1 months')
AND date < date('now','start of month')
Больше месяцев - это "месяцы", а не месяц, как другие говорили ранее.
Ответ 4
Этот код принесет нам надежды на предыдущую неделю
SELECT * FROM order_master
WHERE strftime('%Y-%m-%d',om_date) >= date('now','-14 days') AND
strftime('%Y-%m-%d',om_date)<=date('now') order by om_date LIMIT 6
Ответ 5
SELECT
max(date(date, 'weekday 0', '-7 day')) WeekStart,
max(date(date, 'weekday 0', '-1 day')) WeekEnd,date
FROM table;