【问题标题】:How to add date to MySQL table name? [closed]如何将日期添加到 MySQL 表名? [关闭]
【发布时间】: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 ??
  • 生成越来越多的表与“保持数据库清洁”完全相反。干净的数据库是一个具有合理、规范化、固定架构的数据库,您可以对其运行查询。

标签: php mysql date


【解决方案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 存储桶。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    相关资源
    最近更新 更多