如何从 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/