2010-10-05 64 views
2

我有MySQL的IF然后设置

* PwdSettings具有-50值的表(这是说50天)

* PwdDate(这是上一次更新日期)

* EXPDATE(这是0或1,如果密码是旧的,我需要将其设置为1)

我想编写一个查询说“如果PwdDate是< PwdSettings然后设置ExpDate = 1“

这是我迄今为止尝试过,一切都会引发错误。

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 

回答

1

用途:

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

...或者,使用DATE_SUB:

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

把额外的条件在WHERE子句中:

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

这里是如何我做的。

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