php - 如何从 MySQL 中获取最近 7 天的行?

标签 php mysql pdo

如何从 articles 表中获取最近 7 天的行数? 每行都有一个值 timestmp,其中时间是通过 time() 设置的。 我试过这个:

SELECT COUNT(*) FROM `articles` WHERE `timestmp`>NOW()-INTERVAL 168 HOUR

这对我不起作用:(

表格是:

CREATE TABLE `articles` (
`id`        int(11) NOT NULL AUTO_INCREMENT,
`link`          text NOT NULL,
`article_name`  text NOT NULL,
`descript`      text NOT NULL,
`preview`       text NOT NULL,
`content`       text NOT NULL,
`category`      int(11) NOT NULL,
`author`        text NOT NULL,
`keywrds`       text NOT NULL,
`timestmp`      int(11) NOT NULL,
`modified`      int(11) NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT (`keywrds`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

预期输出是最近 7 天的所有文章,包括名称、描述等。

最佳答案

您的 timestmp 列应该存储一个 UNIX 时间戳,这是自 1970 年 1 月 1 日 UNIX 纪元开始以来的秒数。因此,如果您只想要恰好发生在最后 7 天,那么您可以从 timestmp 列中减去 7 天(秒):

SELECT COUNT(*) AS cnt
FROM articles
WHERE timestmp > UNIX_TIMESTAMP() - 7*24*60*60;

如果相反,您想要 7 天前的记录,包括整个第一天,那么我们需要做更多的工作。在这种情况下,我们必须计算第一天的午夜,然后将其转换为 UNIX 时间戳。

SELECT COUNT(*) AS cnt
FROM articles
WHERE timestmp > UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 7 DAY))

关于php - 如何从 MySQL 中获取最近 7 天的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50190551/

相关文章:

php - X Time Ago 在 PHP 中

php - 正确地从数组中删除 wp 标签

javascript - 是否可以 POST 请求响应类型 "array buffer"?

php - 导入 CSV : Undefined Index in codeigniter

php - 我应该在方法内部还是在调用页面上关闭 PDO 数据库连接?

php - 将图像从swift上传到php服务器时出错

mysql - Group By 为我提供数据库中最旧的结果

mysql - 添加额外的列以减少复杂的查询

php - print_r 插入语句 php pdo

php - 当我从缓存中获取时,fetch 只返回一行