2010-07-30 8 views
2

J'utilise la base de données SQLITE et je stocke la date sous forme de chaîne. Maintenant, je veux comparer à la fois la chaîne comme une date. Lorsque j'utiliseComparaison de la date dans Android

String sqlQuery = "CHOISIR le titre, edate FROM recherche O WH" + ((Date) df.parse ("?")). GetTime() + "< =" + date1.getTime(); c = db.rawQuery (sqlQuery, new String [] {"edate"});

il génère une erreur lors de l'exécution. S'il vous plaît dites-moi comment puis-je comparer deux chaînes en tant que date.

Merci Deepak

Répondre

1
String formatString = "dd-MM-yyyy"; // for example 
SimpleDateFormat df = new SimpleDateFormat(formatString); 
Date date1 = df.parse(string1); 
Date date2 = df.parse(string2); 
if (date1.before(date2)) { 
System.out.println("first date is earlier"); 
} 
+0

Je ne suis pas en mesure de créer l'objet de SimpleDateFormat. Dans cette ligne, j'obtiens une erreur d'exécution. – Deepak

+0

Ensuite, il serait utile si vous postez le stacktrace –

+0

J'ai trouvé la solution ..... mettre le SimpleDateFormat dans le bloc catch – Deepak

2

Vous voulez des chiffres afin de comparer facilement. Je recommande Posix (ou unix) temps, qui compte les secondes depuis un point fixe dans environ 1970.

Utilisez une fonction strftime SQLite pour convertir votre chaîne à l'heure d'époque POSIX (vérifier l'option%) http://sqlite.org/lang_datefunc.html

ensuite, utilisez les fonctions Java pour obtenir le temps époque: http://download.oracle.com/javase/6/docs/api/java/util/Date.html#getTime()

"SELECT title, edate FROM lookup WHERE strftime(edate,'%s') < " + (Date1.getTime()/1000) 
+0

Vous devriez utiliser le format ISO8601 pour vos chaînes de date, lisez cette page sqlite pour info. – Emyr