我的日期是文本格式,因爲SQLite沒有數據類型的日期和時間,所以現在我想按日期排序我的數據。SQLite按日期排序
所以,當我查詢像
SELECT jobno, ondate FROM Reports ORDER BY DATE(ondate)
數據庫,這將通過數據返回的數據按字母順序排序沒有。我如何按日期排序?
我的日期是文本格式,因爲SQLite沒有數據類型的日期和時間,所以現在我想按日期排序我的數據。SQLite按日期排序
所以,當我查詢像
SELECT jobno, ondate FROM Reports ORDER BY DATE(ondate)
數據庫,這將通過數據返回的數據按字母順序排序沒有。我如何按日期排序?
當SQLite的比較/排序形式dd/mm/YYYY
的字符串,它處理它們像任何其他字符串,即字符串中的第一個字符具有的優先級,例如,01/10/2013
被22/01/2000
之前排序。
如果你比較或排序日期,或使用任何的SQLite的built-in date functions,你必須使用所支持的日期格式之一,像YYYY-MM-DD
。
(在你特定的查詢,您呼叫的DATE
函數返回NULL
,如果它不承認它的參數的格式,這意味着你的記錄是不是在所有排序。)
我會建議2件事情,把你的日期以毫秒爲單位或使用格式爲YYYYMMDD的文本。 每次你想要顯示它們或者你想要存儲它們時,轉換它們。 這並不複雜,它會爲您節省很多麻煩。
'YYYYMMDD'不是[支持的日期格式](http://www.sqlite.org/lang_datefunc.html)。 –
yepp我的壞,這是YYYY-MM-DD –
要麼使用基本上是INTEGER類型的Unix-epoch格式,要麼使用時間字符串(YYYY-MM-DD stuff)。 您可以使用的時間字符串格式列表可以找到here。
對unix-epoch進行排序,因爲您會對INTEGER類型和時間字符串進行排序,因爲您會對TEXT類型進行排序。
存放日期作爲時間戳,即以毫秒爲單位是更好的選擇。
您是否檢查'SELECT jobno,DATE(ondate)FROM Reports'?可能'DATE()'不能解析你的數據。在http://www.sqlite.org/lang_datefunc.html時間字符串部分查看支持的格式。 –
「ondate」列中值的格式是什麼? –
格式爲dd/mm/YYYY – Shani