簡體   English   中英

如何按日期對具有不同格式的游標或sqlite數據庫進行排序?

[英]How can I sort a cursor or sqlite database by date with different formats?

我正在嘗試通過增加列表視圖上的日期來對數據進行排序。 根據用戶的設置,保存的日期如下DD.MM.YYYYMMM DD, YYYY 現在,該訂單設置為“日期ASC”。

Cursor cursor = getContentResolver().query(EventEntry.CONTENT_URI,
           projection, null, null, "date ASC");

所以當我按升序排序時,2019.07.2019將顯示在31.03.2019以上,盡管稍后。 在美國格式中,排序始終無法進行,例如,Apr始終顯示在任何其他月份的上方。 我想同時支持兩種日期格式,以提供更好的用戶體驗。

有什么方法可以以正確的順序對游標或數據庫中的日期進行排序?

這將按參數order by將日期格式更改為YYYYMMDD

Cursor cursor = getContentResolver().query(
    EventEntry.CONTENT_URI,
    projection, null, null, 
    "substr(date, 7) || substr(date, 4, 2) || substr(date, 1, 2) ASC");

但是日期比較的問題仍然存在。
最好的辦法是將日期格式更改為YYYY-MM-DD或將日期存儲為整數(紀元毫秒)。

在排序之前,請嘗試將日期轉換為時間戳。

Cursor cursor = getContentResolver().query(EventEntry.CONTENT_URI,
           projection, null, null, "strftime('%s', date) ASC");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM