获取MySQL中时间戳截止后的所有行

时间:2012-01-17 20:04:11

标签: mysql date timestamp unix-timestamp datediff

我正在尝试在过去30天内从具有UNIX时间戳的表中获取所有行。

SELECT count(member_id), DATE(FROM_UNIXTIME(`join_date`)) as date 
FROM members 
WHERE join_date > (join_date-'2592000')
GROUP BY DATE(FROM_UNIXTIME(`join_date`)) 
ORDER BY join_date DESC
显然,有更多的事情发生在那里,因为它将它们按天分组并将它们转换为mysql时间,但重要的是where子句不起作用..其余部分都很好。

我没有收到任何错误,但查询没有像预期的那样被切断。

Query Result

编辑:知道了。

SELECT count(member_id), DATE(FROM_UNIXTIME(`join_date`)) as date 
FROM exp_members 
WHERE DATEDIFF(CURDATE(), FROM_UNIXTIME(join_date)) < 30
GROUP BY DATE(FROM_UNIXTIME(`join_date`)) 
ORDER BY join_date DESC

1 个答案:

答案 0 :(得分:1)

这:WHERE join_date > (join_date-'2592000')几乎肯定是你的问题。

您可能希望使用CURDATE将join_date与DATEDIFF(而不是本身-x)进行比较,这样您可以使用全天增量而不是秒数作为259200,这是人类可读的最佳方式