2013-03-05 80 views
2

排序所以,我有一個看似不那麼聰明的問題,但在這裏不用,日期時間SQLite中

10:00pm to 11:00pm 

在上面的格式從服務器返回的日期時間。

我想能夠對其進行排序,但使用ORDER BY ASC似乎不起作用。它適用於iPhone,但不適用於Android。

是否因爲SQLite數據庫版本?

如何排序時間?

回答

6

顯示的內容不是日期時間,而是時間間隔。

該值是一個字符串,字符串按字典順序進行比較。 爲了確保您的字符串正確排序,所有字段必須始終具有相同的長度(如果不是,9:00將被排序10:00;使用09:00代替)。 此外,AM/PM後綴在一天中的第一個小時內不能正確排序;改用普通的24小時制。

0

也許它是因爲SQLite,但嘗試存儲秒的時間,如果你排序sec它將工作。 EX 1:05 = 65秒。 編輯:如果你想顯示在查看時間,只需將其轉換回H:M:S 我認爲這將是對你最簡單的方法;)

0

你可以做一件事之前,在轉換數據庫存儲日期變爲milis。然後你可以從中得到排序的列表。然後獲得排序結果後,您可以再次將它們轉換爲日期。

對於轉換,您可以使用SimpleDateFormat類。示例代碼可以在doc中找到,或者您可以看到很多示例

0

您可以通過使用時間戳整理日期:像: 「YY MM DD HH:MM一」 //這裏你的情況HH:MMA

轉換您的時間爲簡單的日期格式如下圖所示:

DateFormat simpleDateFordate = new SimpleDateFormat("yy MM dd"); 
     Calendar calender = Calendar.getInstance(); 
     String date = simpleDateFordate.format(calender.getTime()); 
     System.out.println("date>>>>" + date); 
     String time = "10:00pm"; 
     String stringDate = date + " " + time; 

     DateFormat dateFormatdatewithTime = new SimpleDateFormat(
       "yy MM dd hh:mma"); 
     Date dateinMili; 
     try { 
      dateinMili = dateFormatdatewithTime.parse(stringDate); 
      String dateFinal = dateFormatdatewithTime.format(dateinMili.getTime()); 
      System.out.println("Final Date time>>>>"+dateFinal); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

將Mili Seconds存儲到您的數據庫中,或者您可以將dateinSimpleFormat Date存儲到數據庫中。

這一切後,你可以直接像簡單的查詢,對其進行排序: SELECT * FROM表名ORDER BY Column_Date ASC