Bonsoir,
Je suis sous Java et j'ai une requête à effectuer :
Qui est censée supprimer toutes les lignes de ma table bridge_chat pour lesquelles la valeur de strftime('%s', date), c'est à dire le nombre de seconde timestamp de la valeur date (c'est une colonne NOT NULL de ma table), est inférieur à celle que je vais lui passer en paramètre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part CLEAR = c.prepareStatement("DELETE FROM bridge_chat WHERE strftime('%s', date) < ?");
Voila la fonction dans ma classe qui se charge d'exécuter la requête :
Et voila le log qu'elle me donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public void clear(long from) throws SQLException { synchronized (CLEAR) { //DEBUG PreparedStatement ps = CLEAR.getConnection().prepareStatement("SELECT strftime('%s', date) FROM bridge_chat"); ResultSet r = ps.executeQuery(); while(r.next()) { long timestampProvenantDeLaBDD = r.getLong(1); System.out.println(timestampProvenantDeLaBDD + " < " + from + " : " + (timestampProvenantDeLaBDD<from)); } r.close(); ps.close(); //FIN DEBUG CLEAR.setLong(1, from); CLEAR.executeUpdate(); } }
Bien que la condition soit vrai pour toutes les lignes de ma table, aucune ligne n'est supprimée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 1394477395 < 1394490850 : true 1394485995 < 1394490850 : true 1394486372 < 1394490850 : true 1394486519 < 1394490850 : true 1394486700 < 1394490850 : true 1394486976 < 1394490850 : true 1394487425 < 1394490850 : true
Je sèche la dessus ...
Sauriez-vous ce qui bloque ? Je suis en SQLite 3.
Merci d'avance pour le temps que vous accorderez à mon problème.
EDIT :
J'ai réussis a trouver la solution a mon problème, il faut que je transforme ma requête en
Mais je ne comprends pas vraiment pourquoi :/ Quelqu'un a une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part "DELETE FROM bridge_chat WHERE strftime('%s', date)+0 < ?"
Partager