2013-09-25 4 views
1

comment puis-je supprimer mes lignes de cette façon?EFFACER une requête avec les opérations WHERE

Ma table:

sqlite> .schema mytable 
CREATE TABLE mytable (_id INTEGER PRIMARY KEY, hash TEXT, date TEXT); 

Je veux supprimer toutes les lignes qui (heure - heure mémorisée)> 10 secondes. Ma requête ne fonctionne pas:

DELETE FROM mytable WHERE (datetime('now') - datetime(date)) > 10; 

Merci à l'avance!

Répondre

1

Peut-être que cela pourrait fonctionner:

DELETE FROM mytable WHERE datetime('now') > datetime(date, '+10 seconds') 
+0

Cette œuvre, HalR! Vous venez d'oublier d'entourer le second argument de datetime avec des guillemets simples. Merci beaucoup! – SpecTrum

1

Tout d'abord, vous devez vous assurer que vous avez la date SQLite valide et les chaînes du temps dans votre champ date (vous ne vous présentez pas d'exemples de ce que les données domaine détient).

Ensuite, vous devez utiliser l'une des méthodes décrites ici http://www.sqlite.org/cvstrac/wiki/wiki?p=DateAndTimeFunctions pour convertir les dates en quelque chose de soustractable. Probablement le plus simple est de formater chaque valeur avec la chaîne de formatage %s:

strftime('%s', 'now') - strftime('%s', date_col) 
+0

Bonne approche! Je vais essayer ici. Merci! – SpecTrum

+0

C'était la meilleure approche. Merci encore! – SpecTrum

Questions connexes