MySQL定时器的使用

   开发后台每月结算运营各项数据,随着时间推移,数据库中数据量越来越大,不久前请角色和合服已经删除了大部分冷数据。但是开发的累计注册统计数据仍然是 count(*) 来计算,当月累计注册= 上月累计注册 + 当月新增用户。

 

编写存储过程

drop PROCEDURE IF EXISTS `month_operate_data_proc`;

DELIMITER ;;

CREATE PROCEDURE month_operate_data_proc()

BEGIN
        declare v_before_last_registers int unsigned;
        declare v_last_newplayers int unsigned;
        declare v_last_month varchar(20);
        declare v_before_last_month varchar(20);

        DECLARE done INT DEFAULT FALSE;

        set v_before_last_month = DATE_FORMAT(DATE_SUB(CURDATE(),INTERVAL 2 MONTH),'%Y-%m');  /* 获取上上个月年月,应为结算时间已是次月  */
        set v_last_month = DATE_FORMAT(DATE_SUB(CURDATE(),INTERVAL 1 MONTH),'%Y-%m'); /*获取上个月年月*/

        select registerplayer  from month_operate_data where monthTime = v_before_last_month into v_before_last_registers;
        select newRegisterplayer  from month_operate_data where monthTime = v_last_month into v_last_newplayers;
        update month_operate_data set registerplayer = v_before_last_registers + v_last_newplayers where monthTime =  v_last_month;
END;;


delimiter ;

 

3、创建定时器,每个月1日上午9点30分,上班时执行。

CREATE DEFINER=`root`@`localhost` EVENT `month_operate_data` ON SCHEDULE EVERY 1 MONTH STARTS '2018-03-01 09:30:00' ON COMPLETION PRESERVE ENABLE DO call lwol.month_operate_data_proc

 

  

 

转载于:https://www.cnblogs.com/huangjinbin/p/8675937.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值