如何在过去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天的所有文章,包括姓名,描述等。
答案 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))