gpt4 book ai didi

php - mysql - 根据创建日期选择最后两个表

转载 作者:行者123 更新时间:2023-11-29 22:41:24 25 4
gpt4 key购买 nike

我需要一些关于正确实现我的数据库架构的建议。我有一个 cron 脚本,其主要功能是解析 HTML 文档 => 创建数据库表 => 插入记录

我习惯于每月只运行一次这个脚本,但我需要更频繁地运行,这意味着我的数据库表将显着增加。目前我的表格遵循以下格式:table_03,其中最后两位数字代表当前月份。

现在我正在考虑使用 PHP time() 函数来替换当前月份。
我的第一个问题是,这是解决这个问题的好方法吗?

我的第二个问题是如何创建一个动态 SELECT 语句来根据日期获取数据库中的最后两个表?或者更好地知道是否有一个 MySQL 查询可以完成这项工作而不是依赖表名?

例如

table_29_03//3 月 29 日
table_26_03//3 月 26 日...
表_25_03
...

我的查询应该返回最后两个或三个表之间的差异,但没有一致的日期(如每月)我不知道该怎么做。

目前我正在执行以下操作:

$thisMonth = 'table_'.date('m');
$PrevMonth = 'table_'.date('m', strtotime('first day of last month'));

// find new records in this table not available in previous one
$sql = "
SELECT * FROM `".$thisMonth."` WHERE `".$thisMonth."`.`id`
NOT IN (
SELECT `".$PrevMonth."`.`id`
FROM `".$PrevMonth."`
WHERE `".$thisMonth."`.`id` = `".$PrevMonth."`.`id`
); ";

最佳答案

我的第二个问题是如何创建一个动态 SELECT 语句来根据日期获取数据库中的最后两个表?

这就是你想在 MySQL 中实现的目标吗?

SELECT create_time,table_name 
FROM INFORMATION_SCHEMA.TABLES
ORDER BY create_time DESC LIMIT 2

您可以添加其他过滤器,例如我们应该从什么模式中提取数据等...

关于你的第一个问题,我现在正在使用 gmdate 来提取时间的月份和年份。

$now = time();
$month = gmdate("m", $now);
$year = gmdate("y", $now);

gmdate:返回的时间采用格林威治标准时间 (GMT)。

使用time();来设置你的月份是可以的,我认为这没有问题。

旁注:如果您在不同的计算机上运行 PHP 和 MySQL,如果这两个计算机的日期时间不同步,则会出现一些时间差异。如果您想要两者的准确时间表示。您应该依赖于一台机器。

如果您希望 PHP 处理时间日志记录,您可以在表中包含一个列,例如“created_at”,该列指示基于 PHP time() 生成的时间;

如果你想让MySQL处理它,你可以先查询当前日期 选择 curdate();然后根据您从查询中获取的月份创建表名称。

关于php - mysql - 根据创建日期选择最后两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29325711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com