根据系统时间,来判断不同的月份,然后将日志写到不同月份表中:如: create procedure aaaa()
begin
DECLARE var_month varchar(20); DECLARE varyearmonth varchar(20);
select month(current_date),date_format(current_date,'%Y%c') into var_month ,varyearmonth;
select @var_month,@varyearmonth; IF var_month=1 THEN
create table logserver.datalog_varyearmonth select * from hiddenmenu.datalog where 1<>1; ELSEIF var_month=2 THEN create table logserver.datalog_varyearmonth select * from hiddenmenu.datalog where 1<>1;
ELSE create table logserver.datalog_ select * from hiddenmenu.datalog where 1<>1; END IF;
end;
现在是, var_month,varyearmonth 值为空,有那为高手请教下什么问题或者有没有更好的方法,谢谢!;
select var_month,varyearmonth;
看看结果如何
谢谢楼上兄弟,是取到值了,但是:
create table logserver.datalog_varyearmonth select * from hiddenmenu.datalog where 1<>1; 这里应该如何处理: logserver.datalog_varyearmonth --> logserver.datalog_20111.
谢谢
+------------------+
| Tables_in_asdqqq |
+------------------+
| tmplistitem |
+------------------+
1 row in set (0.00 sec)mysql> delimiter $$
mysql> create procedure aaaa()
-> begin
-> DECLARE var_month varchar(20);
-> DECLARE varyearmonth varchar(20);
-> select month(current_date),date_format(current_date,'%Y%c') into var_mo
nth ,varyearmonth;
-> # select @var_month,@varyearmonth;
-> IF var_month=1 THEN
-> set @a=concat('create table ','`',varyearmonth,'`',' select * from tmplis
titem where 1<>1');
-> prepare stmt from @a;
-> EXECUTE stmt;
-> deallocate prepare stmt;
-> #create table varyearmonth select * from tmplistitem where 1<>1;
-> ELSEIF var_month=2 THEN
-> set @a=concat('create table ','`',varyearmonth,'`',' select * from tmplis
titem where 1<>1');
-> prepare stmt from @a;
-> EXECUTE stmt;
-> deallocate prepare stmt;
-> # create table varyearmonth select * from tmplistitem where 1<>1;
-> ELSE
-> create table datalog_3 select * from tmplistitem where 1<>1;
-> END IF;
-> end;$$
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2011-01-05 |
+----------------+
1 row in set (0.00 sec)mysql> call aaaa();
Query OK, 0 rows affected (0.11 sec)mysql> show tables;
+------------------+
| Tables_in_asdqqq |
+------------------+
| 20111 |
| tmplistitem |
+------------------+
2 rows in set (0.00 sec)mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2011-02-05 |
+----------------+
1 row in set (0.47 sec)mysql> call aaaa();
Query OK, 0 rows affected (0.31 sec)mysql> show tables;
+------------------+
| Tables_in_asdqqq |
+------------------+
| 20111 |
| 20112 |
| tmplistitem |
+------------------+
3 rows in set (0.28 sec)
prepare stml from @asql;
execute stml;