Запрос в последний день, на прошлой неделе, в прошлом месяце 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;