php - MySQL PHP : how to efficiently fetch previous X dates that include entries

标签 php mysql date

想象一个基本的网站,用户可以在其中随机发布一些内容。该系统使用 mysql-php 并将每个帖子存储在一个表中,称为 tablePost,其中一列存储日期(或时间)。请注意,用户可以在一天内发布多个帖子。我想要实现的是能够获取用户发布的最后 4 天(或更多)的日期。还要获取帖子信息(postid、posttext 等)。示例输出是:
- 2012-04-25(3 个帖子,postinfo...)
- 2012-04-12(2 个帖子,postinfo...)
- 2011-09-12(33 个帖子,postinfo...)
- 2011-03-04(10 个帖子,postinfo...)

我可以想象两种解决方案:

1) 只使用 tablePost 表,通过 php 遍历条目并获取所需数据

2) 创建另一个表,调用tableActiveDays。当用户发布时,可能会使用 INSERT IGNORE 插入一个条目(userId,dateDay)或检查它之前是否没有被插入。因此,每个 (userId, dateDay) 都是唯一的。这样,如果我想获取最近 4 个活跃日,我可以使用一个简单的 select ... order by ... limit by 4 查询。

我的问题是:
- 还有其他方法可以完成这项任务吗?
- 实现这一目标的最有效方法是什么?

最佳答案

创建 INTEGER 字段并将其命名为“dt_timestamp”。当用户发布消息时,保存在 time() 函数的“dt_timestamp”结果中。

更新:
如果您已注册用户,则添加 INTEGER 类型的字段,将其命名为 last_activity。当用户发布内容时,使用 time() 更新此字段。然后使用这个查询:

SELECT pt.* FROM post_table pt JOIN users_table ut ON ut.id = pt.user_id WHERE pt.dt_timestamp >= ut.last_activity - 86400 * 4 AND ut.id = % 复制代码needed_user_id%;

users_table 有字段 id - 用户的 id。 post_table 具有字段 user_id - 来自 users_table 的字段值。

使用 DATETIME 比使用整数时间戳要慢得多。

关于php - MySQL PHP : how to efficiently fetch previous X dates that include entries,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10396655/

相关文章:

javascript - 如何在javascript中获取动态id

php - 避免在每个函数中调用数据库类

php - 两个数组之间的差异(抑制和添加的行)

javascript - Ajax 将图像裁剪为 PHP

mysql - 将字符串视为 MySQL 语句?

tsql - T-SQL : Convert varchar date column to date type

php - codeigniter 是否自动加载

mysql - 使用 mySQL WEEK() 查找本周的日期时结果为空

c# - 需要向日期添加天数,但从日历中排除某些天

javascript - 在 Javascript 中,我怎样才能以这种格式 yyyymmdd 获取今天的日期