如何将日期添加到 MySQL 表名? [关闭]

Posted

技术标签:

【中文标题】如何将日期添加到 MySQL 表名? [关闭]【英文标题】:How to add date to MySQL table name? [closed] 【发布时间】:2012-10-12 05:45:58 【问题描述】:

我现在正在为 cronjob 编写一些查询。 查询需要创建一个像现有表一样的表。 只是它必须将之后的日期(不带分隔符)添加到表名中。

我想出了这个解决方案: 明天的代码:

$date = date ('dmY');
$date = strtotime(date("dmY", strtotime($date)) . " +1 day");

查询:

$queryvc = "CREATE TABLE vervanger$date LIKE vervanger;
            INSERT vervanger$date SELECT * FROM vervanger";

当我在 php 中回显它时,它会给出我想要的结果,但查询不会执行。而且我认为这是因为我没有从通常必须的查询中“删除”$date。有没有人可以解决这个问题?

该查询将使用 cronjob 每周运行一次,但在 cronjob 中,日期超过几个月的所有表也将被删除。这样数据库就不会变得太大。

【问题讨论】:

你为什么要那个? PS:通常mysql驱动不能一次执行多个查询。 “但是查询没有执行。” --- 问题是它不是一个查询,而是一个查询 为什么不给每条记录添加一个时间戳并以这种方式清理它呢? (假设您想这样做以保持数据库清洁) 动态地拼凑表名是一个巨大的危险信号。你想做什么?为什么是动态表名? 查询语法中需要INSERT INTO ?? 生成越来越多的表与“保持数据库清洁”完全相反。干净的数据库是一个具有合理、规范化、固定架构的数据库,您可以对其运行查询。 【参考方案1】: 第一次创建存档数据库(vervanger_archive)。 原版第二 如果您没有设置 DATE_ADD(为每一行添加时间戳),则为 base。 3rd SET 1 cron task 一天一次,用于从 Original 中移动 OLD 行 表到存档表。

创建带有时间戳名称的表是不好的选择..

【讨论】:

谢谢先生,非常清楚地回答了我的问题。现在创建存档表。 @其余的,我想我对这个问题还不够清楚。我只想在 cronjob 之后重置所有表。所以这个存档的想法只是我还没有想到的。无论如何感谢您的帮助【参考方案2】:

不如创建一个表,也许你可以给这个表中的每条记录一个日期。然后你可以删除太旧的条目。

之后,如果您仍想创建存档表...您可以考虑有关 multiple statements in one statement string 的文档。你必须使用mysqli.multi-query。

【讨论】:

我知道这对你们所有人来说可能很奇怪,但我不希望表格中出现日期。我希望它在 TABLENAME 中,因此通过重新创建表的副本。【参考方案3】:

不确定为什么要选择创建多个表,因为这将是一场噩梦。

但您知道多个查询不会在一个操作中执行。您可以使用 mysqli::multi_query 执行此操作。然后再次确保 db 用户已被授予创建表的访问权限。

我的建议是添加一个附加列“日期”设置为索引并刷新此数据(删除过时的插入新或插入重复键更新或插入忽略,因为您的应用程序需要记录此数据)。如果数据按月存储等,您可能需要研究 MySQL 存储桶。

【讨论】:

以上是关于如何将日期添加到 MySQL 表名? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

将字段名称从 MySQL 表回显到网页 [关闭]

如何将代理键添加到相关表?

如何将 Btree 或哈希索引添加到 mysql 中的表中? [关闭]

如何将格式化的 HTML 添加到 Mysql [关闭]

如何将索引添加到日期时间的列?

如何从/到日期减去/添加天数?