Mysql 根据其他表中的月份更新表
我在MySQL数据库中有这两个相互依赖的表。 目前,Mysql 根据其他表中的月份更新表,mysql,Mysql,我在MySQL数据库中有这两个相互依赖的表。 目前,表2中的DateExpires字段需要是格式为yyyy-mm-dd h:m:s 但我试图将其设置为一年,从日期加入的字段或表1中的续订月份字段开始计算,如:2014-03-01 12:00:00 我一直在尝试根据续订月份和加入日期字段更新它们,但没有任何结果,我要怎么做 使用DATE\u ADD添加年份,使用DATE\u格式转换为所需格式: UPDATE Table2 SET DateExpires = DATE_FORMAT(DATE_ADD
表2中的DateExpires字段需要是格式为yyyy-mm-dd h:m:s
但我试图将其设置为一年,从日期加入的字段或表1中的续订月份字段开始计算,如:2014-03-01 12:00:00
我一直在尝试根据续订月份和加入日期字段更新它们,但没有任何结果,我要怎么做
使用DATE\u ADD添加年份,使用DATE\u格式转换为所需格式:
UPDATE Table2
SET DateExpires = DATE_FORMAT(DATE_ADD(t1.DateJoined, 'INTERVAL 1 YEAR'), '%Y-%m-%d %h:%i:%s')
FROM Table1 t1
WHERE IDMember = t1.ID
如果要基于RenewalMonth,可以这样做:
UPDATE Table2
SET DateExpires = DATE_FORMAT(DATE_ADD(STR_TO_DATE(
concat(t1.RenewalMonth, ' ',
DAY(t1.DateJoined), ', ',
YEAR(t1.DateJoined)), '%M %d,%Y'),
'INTERVAL 1 YEAR'), '%Y-%m-%d %h:%i:%s')
FROM Table1 t1
WHERE IDMember = t1.ID
给你。您将要执行一个更新,将两个表(1和2)以及一个月名称派生表连接起来,以映射到一个月编号。您正在将t2.DateExpires
设置为来自联接的值的串联
下面是它工作的演示:
试试这个:
update table2 as t2
inner join table1 as t1 on t2.IDMember = t1.ID
set DateExpires = date_format(date_add(t1.DateJoined, 'interval 1 year'), '%Y-%m-%d 12:00:00')
他不想简单地增加一年。他想要明年的“续订月”。基于以下问题,您无法确定RenewalDate
是否为%M
@StevenMoseley-您假设是在构建派生表时:)。我认为这是一个非常安全的假设。是的,但我这样做是因为如果值不正确,可以编辑派生表。一个函数不能。但无论如何+1,因为这对某些人来说是一个有用的解决方案。嗯,遇到了一些麻烦,它似乎还将一些记录更新为0001-01-01 12:00:00
,而不是实际日期。您是否有DateJoined
为空的记录?添加了COALESCE
来处理DateJoined
中的null
值(在这些情况下填写当前年份)啊,这是我的错误,一些DateJoined
字段有“0000-00-00”,谢谢!哦-最后一次编辑。。。忘记了NOW()上的YEAR()
函数
update table2 as t2
inner join table1 as t1 on t2.IDMember = t1.ID
set DateExpires = date_format(date_add(t1.DateJoined, 'interval 1 year'), '%Y-%m-%d 12:00:00')