我正在尝试在过去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子句不起作用..其余部分都很好。
我没有收到任何错误,但查询没有像预期的那样被切断。
编辑:知道了。
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
答案 0 :(得分:1)
这:WHERE join_date > (join_date-'2592000')
几乎肯定是你的问题。
您可能希望使用CURDATE
将join_date与DATEDIFF
(而不是本身-x)进行比较,这样您可以使用全天增量而不是秒数作为259200,这是人类可读的最佳方式