2013-10-02 158 views
0

我的日期是文本格式,因爲SQLite沒有數據類型的日期和時間,所以現在我想按日期排序我的數據。SQLite按日期排序

所以,當我查詢像

SELECT jobno, ondate FROM Reports ORDER BY DATE(ondate) 

數據庫,這將通過數據返回的數據按字母順序排序沒有。我如何按日期排序?

+0

您是否檢查'SELECT jobno,DATE(ondate)FROM Reports'?可能'DATE()'不能解析你的數據。在http://www.sqlite.org/lang_datefunc.html時間字符串部分查看支持的格式。 –

+0

「ondate」列中值的格式是什麼? –

+0

格式爲dd/mm/YYYY – Shani

回答

1

當SQLite的比較/排序形式dd/mm/YYYY的字符串,它處理它們像任何其他字符串,即字符串中的第一個字符具有的優先級,例如,01/10/201322/01/2000之前排序。

如果你比較或排序日期,或使用任何的SQLite的built-in date functions,你必須使用所支持的日期格式之一,像YYYY-MM-DD

(在你特定的查詢,您呼叫的DATE函數返回NULL,如果它不承認它的參數的格式,這意味着你的記錄是不是在所有排序。)

0

我會建議2件事情,把你的日期以毫秒爲單位或使用格式爲YYYYMMDD的文本。 每次你想要顯示它們或者你想要存儲它們時,轉換它們。 這並不複雜,它會爲您節省很多麻煩。

+1

'YYYYMMDD'不是[支持的日期格式](http://www.sqlite.org/lang_datefunc.html)。 –

+0

yepp我的壞,這是YYYY-MM-DD –

3

要麼使用基本上是INTEGER類型的Unix-epoch格式,要麼使用時間字符串(YYYY-MM-DD stuff)。 您可以使用的時間字符串格式列表可以找到here

對unix-epoch進行排序,因爲您會對INTEGER類型和時間字符串進行排序,因爲您會對TEXT類型進行排序。

0

存放日期作爲時間戳,即以毫秒爲單位是更好的選擇。