mysql多表联合更新;mysql计算两个日期的间隔天数

现有两个个表(tb_leaveapplication和tb_cworkcount),样式如下:

mysql多表联合更新;mysql计算两个日期的间隔天数_第1张图片

                                                     图一 tb_leaveapplication

 mysql多表联合更新;mysql计算两个日期的间隔天数_第2张图片

                         图二  tb_cworkcount

一、 计算两个日期之间间隔的天数

 对于tb_leaveapplication,要计算出la_begintime到la_endtime之间的时间间隔,利用mysql的to_days函数,代码如下:

select la_e_Num,(SELECT to_days(la_endTime) - to_days(la_beginTime))as days from tb_leaveapplication

结果如下:

mysql多表联合更新;mysql计算两个日期的间隔天数_第3张图片

二、多表联合更新

以'RSXZ140003','RSXZ140006'的数据为例:在tb_leaveapplication中,他们的la_approveFou都为null;在tb_cworkcount中,他们在c_cw_Num='cw4'时c_Number都为0。现在要更新他们的la_approveFou和c_Number,其中让la_approveFou等于0,而c_Number则等于c_Number原来的值加上'RSXZ140003'和'RSXZ140006'在tb_leaveapplication中对应的时间间隔天数。mysql联合更新代码如下:

update tb_leaveapplication,tb_cworkcount 
set tb_leaveapplication.la_approveFou=0,
tb_cworkcount.c_Number=tb_cworkcount.c_Number+((select to_days(la_endTime) - to_days(la_beginTime)+1)) 
where tb_leaveapplication.la_e_Num=tb_cworkcount.c_e_Num 
and tb_cworkcount.c_e_Num in('RSXZ140003','RSXZ140006') 
and tb_cworkcount.c_cw_Num='cw4'

 

结果如下:

mysql多表联合更新;mysql计算两个日期的间隔天数_第4张图片

                 图三  tb_cworkcount的结果

                  图四  tb_leaveapplication的结果

你可能感兴趣的:(mysql)