我一直在尝试让我的sql查询返回过去7天内创建的记录。
每个条目都有一个时间戳记录,所以我使用了TIMESTAMPDIFF函数来编写以下查询
SELECT * FROM `messages` WHERE TIMESTAMPDIFF(DAY, time, NOW()) <= 7
出于某种原因,这将返回2011年的记录列表!
这是一个简单的语法错误我做错了吗?
我也尝试过使用DATEDIFF()
SELECT * FROM `messages` WHERE DATEDIFF(NOW(), time) <= 7
但这似乎给了我同样错误的结果。我怀疑这是因为DATEDIFF无法使用UNIX时间戳?
我在另一个使用DATEDIFF()查询的表上使用了另一个查询,它工作正常,但在该表中有一个实际的日期列,而不是时间戳。
很抱歉,如果这是一个简单的答案,但我已经玩了一段时间,现在无济于事!
答案 0 :(得分:1)
尝试以下查询:
SELECT *
FROM messages
WHERE time > UNIX_TIMESTAMP(NOW()) - 604800
一点解释:7天= 168小时= 10 080分钟= 604 800秒。
由于UNIX-timestamps是自1970-01-01 00:00:00以来经过的秒数,因此您必须使用秒计算。 MySQL中的大多数日期/时间函数都没用,因为它们只使用本机MySQL格式来存储日期和时间。