Um ... Questo può sembrare stupido, ma ogni record nella tabella sarà più vecchio di Ora(), dal momento che ora() è calcolata a il tempo in cui viene elaborata la query. Se si desidera eliminare un record più vecchio di un altro, non si desidera utilizzare Now(), ma il timestamp dal record a cui si sta confrontando il resto. In alternativa, se si desidera eliminare record più vecchi di un punto specifico nel tempo, è necessario calcolare il timestamp che si desidera utilizzare per il confronto. Ad esempio, per eliminare i record più vecchio di 10 minuti, è possibile utilizzare questo:
DELETE FROM events WHERE timestamp < (NOW() - INTERVAL 10 MINUTE)
Oppure, per l'eliminazione di record che sono più di un giorno antiche:
DELETE FROM events WHERE timestamp < (NOW() - INTERVAL 1 DAY)
Per i punti specifici nel tempo (ad esempio, ottobre 12th, 2012 at 4:15:00 PM GMT), c'è un metodo per farlo, ma la sintassi mi sfugge, proprio ora. Dov'è il mio manuale MySQL? :)
fonte
2012-11-19 09:18:54
Grazie per la rapida risposta, ma che non sta funzionando ! La sua cancellazione di tutti i record anche se il timestamp non è più vecchio rispetto alla data/ora corrente – Arihant
da "vecchio" significava che il timestamp è> rispetto all'ora corrente? quindi devi trasformare la dichiarazione in timestamp> NOW() –