在mysql中,我有从今天开始生成1年+ 1天的代码,然后将expiryDate字段(日期数据类型)设置为特定用户的代码
e.g
UPDATE fulllicense set expiryDate='2018-10-14' where userid=1;
但现在我需要对其进行修改,以便如果expiryDate的当前值为null或早于今天,就像当前那样做,但是如果比今天晚,我希望它将当前值添加一年和一天。因此,例如,如果当前值是2017-12-17,我希望它设置为2018-12-18,我无法弄清楚如何在单个更新语句中执行此操作
答案 0 :(得分:1)
使用IF
:
UPDATE fullllicense
SET expiryDate = DATE_ADD(DATE_ADD(IF(expirydate IS NULL OR expirydate < CURDATE(), CURDATE(), expirydate),
INTERVAL 1 YEAR),
INTERVAL 1 DAY)
答案 1 :(得分:0)
我会使用DATE_ADD
函数。您似乎已经处理了WHERE
条款,因此我只使用您包含的条款。
UPDATE fulllicense
SET expiryDate = DATE_ADD(DATE_ADD(expiryDate, INTERVAL 1 YEAR), INTERVAL 1 DAY)
WHERE userid = 1
AND expiryDate > NOW();
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
答案 2 :(得分:0)
UPDATE fulllicense
SET expiryDate =
CASE WHEN expiryDate IS NULL OR expiryDate < CURDATE()
THEN '2018-10-14'
ELSE
DATE_ADD(DATE_ADD(expiryDate, INTERVAL 1 YEAR), INTERVAL 1 DAY) END