如何在过去7天内从MySQL获取行?

时间:2018-05-05 14:32:05

标签: php mysql pdo

如何在过去7天内获取表articles中的行? 每行都有一个值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天的所有文章,包括姓名,描述等。

1 个答案:

答案 0 :(得分:1)

您的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))