创建一个包含日期名称的表 [英] create a table with date name

查看:162
本文介绍了创建一个包含日期名称的表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在写一个简单的程序来备份表格 -

I am writing a simple procedure to backup a table-

CREATE PROCEDURE daily_backup()
BEGIN
   DECLARE given_date VARCHAR(25);
   SET given_date = now(); 

   CREATE TABLE given_date LIKE db1.table1;
   INSERT INTO given_date SELECT * FROM db1.table1;


END

但它创建一个名为given_date 。我想创建一个日期为名称的表。如何做同样的事?

But it creates a table with name given_date . I want to create a table with date as name. How to do the same ?

推荐答案

试试这个

DELIMITER |
CREATE PROCEDURE daily_backup()
BEGIN
  SET @s = CONCAT('CREATE TABLE bak_', DATE_FORMAT(CURDATE(), '%Y%m%d'), ' SELECT * FROM table1');
  PREPARE stmt FROM @s;
  EXECUTE stmt;
END
|
DELIMITER ;

UPDATE :您可以每天执行多次

UPDATE: You can make it run multiple times a day

DROP PROCEDURE daily_backup;
DELIMITER |
CREATE PROCEDURE daily_backup()
BEGIN
  SET @tbl = DATE_FORMAT(CURDATE(), '%Y%m%d');
  SET @s = CONCAT('DROP TABLE IF EXISTS bak_', @tbl);
  PREPARE stmt FROM @s;
  EXECUTE stmt;

  SET @s = CONCAT('CREATE TABLE bak_', @tbl, ' SELECT * FROM table1');
  PREPARE stmt FROM @s;
  EXECUTE stmt;
END
|
DELIMITER ;

这是 SQLFiddle 演示

Here is SQLFiddle demo

这篇关于创建一个包含日期名称的表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆