Page 1 sur 1

effacer touts les enregistements si champ date et heure <

Posté : 05 nov. 2007, 02:08
par BeRoots
salut à tous :)

j'ai un petit soucis de requete sql qui me travail :-k
j'aimerai effacé touts les enregistrements dont les champs date et time (de type date et time respectif), sont strictement inferieur au moment d'execution de la requete...

je fait comme suis mais rien n'est effacer alors que j'ai bien des enregistrements qui sont "perimé":

Code : Tout sélectionner

DELETE FROM `public_table_manif` WHERE `date` < CURDATE() AND `time` < CURTIME();
si quelqu'un a une idée ;)
merci d'avance :)

Posté : 05 nov. 2007, 02:15
par Sékiltoyai
Ya une petite subtilité.
Quand tu fais "`date` < CURDATE() AND `time` < CURTIME()" , si tes enregistrements sont du 2 janvier 1876 mais à 23H56, ils ne seront pas effacés car il est 1H00 du mat… Je vais voir si je peux pas te trouver une fonction :)

Posté : 05 nov. 2007, 02:24
par Sékiltoyai
Je viens de regarder la doc sur les dates : http://dev.mysql.com/doc/refman/5.0/fr/ ... tions.html
J'ai pas trouvé de truc vraiment intéressant, à part peut être STR_TO_DATE().

Mais avant de l'utiliser, peronnellement j'aurais testé tout simplement ceci :

Code : Tout sélectionner

CONCAT(date, ' ', time) < NOW()
En espérant que MySQL compare les chaines comme des dates…

Edit : En fait ya NOW() pour le datetime courant :D

Posté : 05 nov. 2007, 12:53
par Hubert Roksor
Schéma de la table stp.

Posté : 05 nov. 2007, 16:19
par BeRoots
merci pour vos reponse :)

voici mon schema de table:

Code : Tout sélectionner

CREATE TABLE temp_table_manif ( `id` int UNSIGNED AUTO_INCREMENT, `date` date NOT NULL, `time` time NOT NULL , `titre` VARCHAR(50) NOT NULL , `manif` text(65535) NOT NULL, PRIMARY KEY (id) ) TYPE = MYISAM CHARACTER SET latin1 COLLATE latin1_general_cs;
si quelqu'un à une idée :)

merci d'avance.

Posté : 05 nov. 2007, 16:44
par iclo
Remplacer les champs de dates et de temps, par un champ unique datetime, qui contiendra les deux informations, et sera donc comparable par une seule clause dans le where.

Bien-sûr, si il est encore possible de modifier la base de donnée. ;)

Posté : 05 nov. 2007, 16:56
par BeRoots
c'est ce que je voulai essayer en effet :)
je vais donc faie ainsi ;)

encore merci à tous :D