2013-03-05 2 views
2

J'ai une question apparemment pas si intelligent mais voilà,temps Date tri SQLite

10:00pm to 11:00pm 

ont un temps de date de retour du serveur dans le format ci-dessus.

Je veux être en mesure de le trier, mais l'utilisation de ORDER BY ASC ne semble pas fonctionner. Cela fonctionne sur l'iPhone mais cela ne fonctionne pas sur Android.

Est-ce dû à une version de base de données SQLite?

Comment trier l'heure?

Répondre

6

Ce que vous montrez n'est pas une date mais un intervalle de temps.

Cette valeur est une chaîne, et les chaînes sont comparées lexicographiquement. Pour garantir le tri correct de vos chaînes, tous les champs doivent toujours avoir la même longueur (sinon, 9:00 sera trié après10:00; utilisez plutôt 09:00). En outre, les suffixes AM/PM ne trient pas correctement dans la première heure de la journée; utilisez plutôt un format 24 heures.

0

Peut-être parce que le SQLite, mais essayez de stocker l'heure en secondes, si vous sortez sec ça va marcher. EX 1:05 = 65 sec. Edit: si vous voulez afficher l'heure en vue, juste reconvertir en h: m: s Je pense que ce sera la meilleure façon pour vous;)

0

Vous pouvez faire une chose, avant le stockage dans la base de données converti la date en milis. Ensuite, vous pouvez obtenir la liste triée à partir de cela. Ensuite, après avoir obtenu le résultat trié, vous pouvez les convertir à nouveau.

Pour la conversion, vous pouvez utiliser la classe SimpleDateFormat. exemples de codes peuvent être trouvés dans le doc ou vous pouvez voir beaucoup d'exemples là-bas

0

Vous pouvez trier ce jour en utilisant Time Stamp: Comme: "AA MM JJ hh: mm a" // ici dans votre cas hh: mma

vous convertir le temps en format de date simple comme ci-dessous:

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(); 
     } 

Stockez Mili Secondes dans votre base de données ou vous pouvez simplement stocker votre date dateSimpleFormat dans votre base de données.

Après tout cela, vous pouvez trier directement par requête simple comme: SELECT * FROM nom_de_table ORDER BY Column_Date ASC