我有一个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的了解不足。 请告诉我,如何制作这样的记录?
答案 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');