2011-04-20 60 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) 

希望這有助於