effacer touts les enregistements si champ date et heure < moment

Mammouth du PHP | 843 Messages

05 nov. 2007, 02:08

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 :)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

ViPHP
ViPHP | 5924 Messages

05 nov. 2007, 02:15

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 :)

ViPHP
ViPHP | 5924 Messages

05 nov. 2007, 02:24

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

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

05 nov. 2007, 12:53

Schéma de la table stp.

Mammouth du PHP | 843 Messages

05 nov. 2007, 16:19

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.
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

ViPHP
ViPHP | 2144 Messages

05 nov. 2007, 16:44

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. ;)

Mammouth du PHP | 843 Messages

05 nov. 2007, 16:56

c'est ce que je voulai essayer en effet :)
je vais donc faie ainsi ;)

encore merci à tous :D
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non: