2011-04-20 56 views
5

在SQLite中,是否有任何方法可以按日期排序,并且按时间而不是按字母顺序排列结果?帮助在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 

三月应该来四月一日前。

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

谢谢!

回答

11

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

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

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

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

+0

很简单,这对我来说是个诀窍。非常感谢您的解释和帮助! – littleK 2011-04-20 16:44:28

+0

感谢您的链接,它救了我!看起来很傻,SQLite允许你创建一个类型为DATETIME的列,如果你可以把“hello”放入它的话!我现在至少发现了http://www.sqlite.org/datatype3.html。 – 2012-12-05 12:14:29

+0

我只是不得不发帖谢谢你,我一直在寻找和调试这样的解决方案。非常好的解决方案,谢谢! – Yenthe 2013-12-21 10:48:31

-4

试试这个:

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

嗯...没有。一个简单的字符串比较在这里将不起作用,因为(如原始海报所指出的)“March”,即“M”,将会在“April”之后出现。 – VoteyDisciple 2011-04-20 16:24:19

0

你可以做这样的事情

 
select * from sometable order by date(thestringDateColumn) 

希望这有助于