2017-02-19 73 views
0

我的日期在格式爲「EEE MMM dd HH:mm:ss zzz yyyy」的sqlite中保存爲字符串。這樣保存是非常重要的。SQLite通過日期格式EEE MMM dd HH:mm:ss zzz yyyy

但是,現在我需要從數據庫中獲取保存的數據,同時按照最新的日期排序。

String selectQuery = "SELECT * FROM " + InteractionSchema.TABLE + 
        " interaction " + " WHERE interaction." + 
        InteractionSchema.KEY_owner + 
        " =? ORDER BY datetime(" + InteractionSchema.KEY_date + 
        ") DESC LIMIT 15"; 

它根本不工作,我嘗試使用所有其他SQLite date function但無濟於事。我很確定它與日期格式有關。有沒有人處理過這個? (PS,它不是重複我已經通過類似的問題在計算器上)

+1

'這是非常重要的是這種方式保存.' ...這種格式將導致SQL中的問題。爲什麼這很重要?我寧願將日期以標準格式'yyyymmdd'存儲,並在查詢時生成您的版本。 –

回答

1

您應該始終在Android設備上的SQLite中將日期保存爲UTC時間戳(INTEGER)。通過這種方式,您可以輕鬆比較和排序它們,並且它們使用更少的存儲空間

然後,沒有任何東西阻止您將日期格式化爲使用SimpleDateFormat的原始格式。

如果時區對於保存很重要(假設您希望日期始終根據特定國家/地區的時區進行格式化,而不是使用默認區域設置),則可以將UTC偏移量另存爲一個單獨的列到時間戳。

0

如果你想顯示日期時間,也希望能夠排序的數據沒有額外的處理,你可以有兩列TEXT和INTEGER您可以在TEXT列中存儲格式化日期,在INTEGER列中存儲銑牀中的時間,並根據INTEGER數據對數據進行排序。這樣你就可以完成這兩件事情。

+1

SQLite中的日期基本上就是字符串。 –

+0

如果您將日期保存爲字符串,則按功能排序不起作用。它最好將數據存儲爲DATETIME數據類型或具有可自動增加rowid的_id列,該列可輕鬆排序。 – Deepesh

+1

在sqlite中沒有DATETIME類型,可以訂購yyyyMMdd格式的日期字符串,並且androidhive是一個糟糕的教程網站 – Selvin

相關問題