我正在处理一个项目,无法使用另一个日期字段(yyyy-mm-dd)更新日期字段(yyyy-mm-dd)。我搜索过,人们使用存储过程和游标来迭代每个结果,但我不知道该怎么办。
所以我需要得到最后一个周年纪念日并更新字段 registration_date
如果 date
大于今天的日期 CURDATE()
.
wp\u wf\u golf\u res是一张预订桌。
这就是我所拥有的:
UPDATE wp_wf_golf_res
INNER JOIN wp_users ON wp_wf_golf_res.user_id = wp_users.ID
SET wp_wf_golf_res.registration_date = *anniversaryDate*
WHERE wp_wf_golf_res.date > CURDATE();
表1:wp\u用户列: ID (PK)
, user_registered
表2:wp\u wf\u golf\u res列: id (PK)
, date
, registration_date
.
周年纪念日应更新为 registration_date
如果 date
比今天更伟大。如果 date
小于今天更新 registration_date
与 user_registered
价值观。 wp_users.user_registered
是用户注册的日期。 wp_wf_golf_res.date
是预订日期。 wp_wf_golf_res.registration_date
意思是预约的日期,就像日志一样。周年纪念日是需要计算和更新的 wp_wf_golf_res.registration_date
.
3条答案
按热度按时间0kjbasz61#
首先,我们必须回答这个问题:用户的最后一个周年纪念是什么时候?
这个问题的答案是:今天是2018年9月3日。因此,如果用户的注册日在9月3日之前,那么周年纪念日是今年(例如,2018年8月12日)。如果用户的注册日在9月3日之后,则该日期为去年(例如2017年11月1日)。
(当然,你要把今天包括在两个范围中的一个范围内;决定哪一个。)
我们可以将月和日作为字符串进行比较(格式=月两位数,日两位数):
完整的update语句:
h79rfbju2#
所以假设您使用的是innodb,因为事务是必需的。
flvlnr443#
据我所知,你需要一个条件更新,所以当你不能使用case时,由于缺乏表结构,很难给出你想要的答案