2010-10-05 13 views
2

J'ai une table avecMySQL SI ALORS SET

* PwdSettings qui a une valeur de -50 (qui est dire 50 jours)

* PwdDate (qui est la date de la dernière mise à jour)

* EXPDATE (qui est 0 ou 1, si je passe est vieux besoin mis à 1)

Je suis en train d'écrire une requête pour dire " IF PwdDate est < PwdSettings puis SET ExpDate = 1 "

Voici ce que j'ai essayé jusqu'à présent, tout est erroné.

UPDATE wp_users SET ExpDate = 1 WHEN PwdDate < DATE_ADD(CURDATE(), INTERVAL -50 DAY) WHERE user_email='[email protected]' 

UPDATE wp_users SET ExpDate = 1 WHERE user_email='[email protected]' IF(PwdDate < DATE_ADD(CURDATE(), INTERVAL -50 DAY)) 

IF PwdDate < DATE_ADD(CURDATE(), INTERVAL -50 DAY) WHERE user_email='[email protected]' THEN SET ExpDate = 1 

Répondre

1

Utilisation:

UPDATE wp_users 
    SET ExpDate = 1 
WHERE PwdDate < DATE_ADD(CURDATE(), INTERVAL -50 DAY) 

... ou, en utilisant DATE_SUB:

UPDATE wp_users 
    SET ExpDate = 1 
WHERE PwdDate < DATE_SUB(CURDATE(), INTERVAL 50 DAY) 
0

Mettre la condition supplémentaire dans la clause WHERE:

UPDATE wp_users 
SET ExpDate = 1 
WHERE user_email='[email protected]' 
AND PwdDate < CURDATE() - INTERVAL 50 DAY 
1

Voici comment je l'ai fait.

UPDATE wp_users 
SET ExpDate = IF(PwdDate <= DATE_ADD(CURDATE(), INTERVAL PwdSettings DAY), 1, 0) 
WHERE user_email='[email protected]'