mysql存储过程 分表统计_mysql 存储过程:把昨天的数据找出来并保存到对应的月份分表...

DELIMITER $$

CREATE PROCEDURE insertDataEveryday()

BEGIN

#把昨天的数据找出来插入到对应的月份分表

DECLARE v_tableName, v_time_begin,v_time_end,v_year,v_month ,v_month_current,v_yesterday VARCHAR(32);

DECLARE v_sql VARCHAR(2000);

DECLARE v_count int;

#获取系统时间

select year(CURRENT_DATE) into v_year;

#上个月

#select substr( DATE_ADD(CURDATE(),INTERVAL -1 MONTH),6,2)into v_month;

#本月

select substr( CURDATE(),6,2) into v_month_current;

#昨天

select DATE_SUB(curdate(),INTERVAL 1 DAY) into v_yesterday;

#要插入数据的月份

select REPLACE(substr(DATE_SUB(curdate(),INTERVAL 1 DAY),1,7),'-','') into v_month;

#获取时间起止

set v_time_begin=CONCAT('''',v_yesterday,' 00:00:00','''');

set v_time_end=CONCAT('''',v_yesterday,' 23:59:59','''');

#获取表名

set v_tableName=CONCAT('smp_equip_realtimedata_',v_month);

#插入数据

set v_sql=CONCAT('insert into ', v_tableName,' (id,create_by,create_date,update_by,update_date,remarks,del_flag,equip_id,equip_code,equip_name,equip_type,func_code,data_lenth,uv_a,uv_b,uv_c,ia_a,ia_b,ia_c,leakage_current,temperature_i,temperature_ii,temperature_iii,temperature_iv,ta_trans_ratio,alarm_leakage_current,alarm_overload,alarm_short_circuit,alarm_overvoltage,alarm_under_voltage,alarm_broken_circuit,alarm_open_phase,alarm_phase_stagger,alarm_electric_arc,alarm_smoke_detector,alarm_flammable_gas,alarm_toxic_gas,alarm_temp_i,alarm_temp_ii,alarm_temp_iii,alarm_temp_iv,di1,di2,di3,di4,di5,di6,di7,di8,do1,do2,do3,do4,do5,do6,do7,do8,data_time,fault_leakage_current,fault_temp_i,fault_temp_ii,fault_temp_iii,fault_temp_iv,pt,active_energy,reactive_energy) select id,create_by,create_date,update_by,update_date,remarks,del_flag,equip_id,equip_code,equip_name,equip_type,func_code,data_lenth,uv_a,uv_b,uv_c,ia_a,ia_b,ia_c,leakage_current,temperature_i,temperature_ii,temperature_iii,temperature_iv,ta_trans_ratio,alarm_leakage_current,alarm_overload,alarm_short_circuit,alarm_overvoltage,alarm_under_voltage,alarm_broken_circuit,alarm_open_phase,alarm_phase_stagger,alarm_electric_arc,alarm_smoke_detector,alarm_flammable_gas,alarm_toxic_gas,alarm_temp_i,alarm_temp_ii,alarm_temp_iii,alarm_temp_iv,di1,di2,di3,di4,di5,di6,di7,di8,do1,do2,do3,do4,do5,do6,do7,do8,data_time,fault_leakage_current,fault_temp_i,fault_temp_ii,fault_temp_iii,fault_temp_iv,pt,active_energy,reactive_energy from smp_equip_realtimedata a where a.create_date>= ',v_time_begin, ' and a.create_date<= ',v_time_end);

set @v_sql=v_sql; #--注意很重要,将连成成的字符串赋值给一个变量(可以之前没有定义,但要以@开头)

prepare stmt from @v_sql;#--预处理需要执行的动态SQL,其中stmt是一个变量

EXECUTE stmt; #执行SQL语句

deallocate prepare stmt; #释放掉预处理段

END$$

DELIMITER ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值