Выбор событий из базы данных по метке времени - PullRequest
0 голосов
/ 08 января 2019

У меня есть база данных Sqlite3, с таблицей reports, в таблице есть поле date INTEGER, в ней хранятся метки времени Unix, я хочу сделать два варианта:

CREATE TABLE reports (id INTEGER PRIMARY KEY, user_id, report, date INTEGER);
SELECT * FROM reports;
1|123456|report|1546965098

1.Все записи за предыдущий месяц;

2.Все записи с первого дня этого месяца по сегодняшний день.

Я попробовал, но это не сработало.

SELECT * FROM reports WHERE datetime(date, 'unixepoch') >= date('now', '-1 month); 

Я понимаю, что чего-то не хватает, но, к сожалению, недостаточно знаний по sql. Подскажите, пожалуйста, как сделать такие записи?

1 Ответ

0 голосов
/ 08 января 2019

Чтобы получить 1-й день предыдущего месяца, вам нужно:

date('now','start of month','-1 month')

, поэтому вы хотите, чтобы даты начинались с вышеуказанной даты и не включали 1-й день текущего месяца, а именно:

date('now','start of month')

То есть вы можете получить строки за предыдущий месяц:

SELECT * 
FROM reports 
WHERE 
  datetime(date, 'unixepoch') >= date('now','start of month','-1 month')
  AND 
  datetime(date, 'unixepoch') < date('now','start of month');

2-е утверждение проще:

SELECT * 
FROM reports 
WHERE 
  datetime(date, 'unixepoch')
  BETWEEN 
  datetime('now', 'start of month') AND datetime('now', 'localtime'); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...