通过时间戳从数据库中选择事件

时间:2019-01-08 16:26:55

标签: sqlite

我有一个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 :(得分:0)

要获取上个月的第一天,您需要:

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

因此,您希望日期从上述日期开始,一直到当前月份的第一天(不包括):

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');

第二条语句更简单:

SELECT * 
FROM reports 
WHERE 
  datetime(date, 'unixepoch')
  BETWEEN 
  datetime('now', 'start of month') AND datetime('now', 'localtime');