我需要在SQLite中通过查询获取时间戳格式的已排序日期。
我尝试了这个查询,但效果不佳。
SELECT * FROM allmessages WHERE TIMESTAMP <= DATE('now','-365 day') AND TIMESTAMP >= DATE('now') order by TIMESTAMP DESC
我需要按日期排序,例如:
从今天到一年前
从今天到30天前
从今天到7天前
这些是数据库中的日期
以下是我得到的内容:
SELECT *
FROM allmessages
WHERE timestamp <= strftime('%s', 'now')*1000
AND timestamp >= strftime('%s', 'now', '-365 days')*1000;
需要注意的一些事项:
你的时间戳似乎是自纪元以来的毫秒数?我将SQLite内部时间戳乘以1000以反映这一点。
你想要从今天到一年前(2012年)的日期吗?如果是这样,上面的查询就可以了;如果你想要从今天到明年同期(2014年)的日期,交换比较运算符即可。
我正在使用SQLite的内部rowid
列;你可以通过将其替换为自己的id列来将其移动到其他数据库中。
试试这个:
SELECT * FROM allmessages WHERE DATE(TIMESTAMP/1000, 'unixepoch') >= DATE('now','-365 day') AND DATE(TIMESTAMP/1000, 'unixepoch') < DATE('now') order by TIMESTAMP DESC
unixepoch
格式,因为我尝试使用 SELECT datetime(1377175845000, 'unixepoch')
和 SELECT DATE(1377175845000, 'unixepoch')
进行查询,但它们显示出错误的格式。而格式转换器在此处 http://www.epochconverter.com/ 可以显示正确的日期格式。 - sarabuSELECT * FROM allmessages WHERE DATE(TIMESTAMP) >= DATE('now','-365 day') AND DATE(TIMESTAMP) < DATE('now') order by TIMESTAMP DESC
date(timestamp)
而不是 *
。 - CL.