Sqlite查询日期排序

时间:2013-08-22 12:56:33

标签: android sqlite date

我需要在SQLite中通过查询获取时间戳格式

的排序日期

我尝试了这个查询,但效果不佳

SELECT  * FROM  allmessages WHERE  TIMESTAMP <=  DATE('now','-365 day') AND  TIMESTAMP >=  DATE('now')  order by  TIMESTAMP  DESC

我需要排序日期,如

从今天到1年之前

从今天到30天之前

从今天到7天之前

这些是DB

中的日期

enter image description here

Sory因为英语不好......

3 个答案:

答案 0 :(得分:3)

这就是我所拥有的:

SELECT *
FROM allmessages
WHERE timestamp <= strftime('%s', 'now')*1000
AND timestamp >= strftime('%s', 'now', '-365 days')*1000;

一些警告:

你的时间戳似乎是从纪元开始的几毫秒?我将SQLite的内部时间戳乘以1000以反映出来。

您想要今天和一年前(2012年)之间的日期吗?如果是这样,上面的查询就可以了;如果你想要从今天到现在(2014年)的一年,请翻转比较运算符。

我正在使用SQLite的内部rowid列;您可以将其替换为您自己的id列,将其移动到其他数据库。

Here's a live SQL Fiddle demo.

答案 1 :(得分:1)

不应该只是

SELECT  * FROM  allmessages WHERE  DATE(TIMESTAMP) >=  DATE('now','-365 day') AND   DATE(TIMESTAMP) <  DATE('now')  order by  TIMESTAMP  DESC

答案 2 :(得分:1)

试试这个:

SELECT  * FROM  allmessages WHERE  DATE(TIMESTAMP/1000, 'unixepoch') >=  DATE('now','-365 day') AND   DATE(TIMESTAMP/1000, 'unixepoch') <  DATE('now')  order by  TIMESTAMP  DESC

查看更多详细信息(查找时间戳):http://www.sqlite.org/lang_datefunc.html