帮助在SQLite中按日期排序结果

时间:2011-04-20 16:17:49

标签: sql sqlite date

在SQLite中是否有任何方法可以按日期订购,并且按时间而不是按字母顺序排序?

例如:

SELECT * FROM details GROUP BY date;

John    |     Smith     |     April 01, 2011
John    |     Smith     |     April 03, 2011
John    |     Smith     |     April 04, 2011
John    |     Smith     |     March 25, 2011
3月应该在4月之前到来。

我猜这里的答案是将我的日期存储为长时间戳,但我不确定是否可以使用SQLite更轻松地完成。

谢谢!

5 个答案:

答案 0 :(得分:11)

SQLite中没有内置的DATE类型(在其他一些数据库管理系统中存在),但它确实有很好的日期和时间函数:http://www.sqlite.org/lang_datefunc.html

您可以使用日期(“2011年4月1日”)取回ISO-8601日期(例如,2011-04-01)。

此格式具有可读字符串和可排序的优点。 2011-03-25自然是在2011-04-01之前通过标准字符串比较规则,所以不需要特殊操作。

因此,请以该格式存储日期,并使用date()函数(或其他相关函数)获取该格式。

答案 1 :(得分:3)

您可以将日期转换为实际日期以进行比较。

尝试将order by julianday(date)添加到查询的末尾

http://www.sqlite.org/cvstrac/wiki?p=DateAndTimeFunctions

答案 2 :(得分:1)

日期必须是字符串而不是实际日期。您需要将日期转换为实际日期。这是Sqlite日期和时间函数的链接。 http://www.sqlite.org/lang_datefunc.html

答案 3 :(得分:0)

你可以做这样的事情

select * from sometable order by date(thestringDateColumn)

希望这有帮助

答案 4 :(得分:-4)

试试这个:

SELECT * FROM details GROUP BY date ORDER BY date ASC;