如何将日期添加到 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 表名? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章