在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更轻松地完成。
谢谢!
答案 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)
添加到查询的末尾
答案 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;