update where un champ date...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : update where un champ date...

par Overseas » 17 août 2005, 10:02

Parfait ! =D> c'est exactement ce qu'il me fallait !

je vais étudier ça... :boire9:

Merci ! :agenouille:

Vu. La prop' de ouckileou, adaptée, ne donne pas le résultat escompté, j'ai finalement mis :
update annonce set stop_an = '2' where TO_DAYS(NOW()) - TO_DAYS(date_an) > 30

Désopilant de simplicité, et sans aucun calcul ! :D

par ouckileou » 17 août 2005, 09:58

plutôt que faire les calculs toi même, pourquoi ne pas confier ça à MySQL ?
suivant la version que tu utilises, un truc de ce genre là serait moins compliqué

Code : Tout sélectionner

update annonce set stop_an = '2' where date_an > DATE_ADD(date_an, INTERVAL 30 DAYS)
voir aussi DATEDIFF disponible depuis MySQL 4.1

par Cyrano » 17 août 2005, 09:55

TU pourrais faire ça directement en SQL, les fonctions de manipulations de dates sont nombreuses. Tu peux donc déterminer le nombre de jour dans une clause WHERE pour faire ton UPDATE

Ue visite s'impose dans la doc de MySQL sur le sujet

par Overseas » 17 août 2005, 09:51

tout d'abord merci pour la réponse rapide, je n'aurais pas dû aller me coucher ! :-"

le champ date_an est en datetime, donc à la seconde près, d'où le calcul de flottant. :wink:
Ce type de calcul marche évidemment très bien lorsque l'utilisateur prolonge ou rends un enregistrement manuellement obsolète.

par Cyrano » 17 août 2005, 08:31

Ton champ de date est de quel type dans ta table ?

update where un champ date...

par Overseas » 17 août 2005, 04:02

Bonjour,

je lis depuis longtemps ce forum :D , mais cette nuit je suis amené à poster :oops: :

j'ai une table où vont régulièrement se périmer des enregistrements.
Un enregistrement est automatiquement périmé au bout de 30 jours, soit :

$thedate = date("Y-m-d H:i:s") ;
$dacejour = strtotime($thedate) ;
$flottante = $dacejour-2592000 ; // 30 jours = 30 * 60 * 60 * 24

Comme j'aimerais éviter de passer par un Loop pour convertir chaque date :lol: , comment effectuer l'équivalent de l'update ci-dessous ?
$perimed = mysql_query("update annonce set stop_an = '2' where date_an < $flottante") ;
$altered = mysql_affected_rows() ;

je me doute que si ça ne marche pas (et ça ne marche pas :roll: ), c'est parce que date_an n'est pas "compatible" avec la valeur $flottante... :wink: