0

我一直在尝试让我的 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() 查询的表上使用了另一个查询,它工作正常,但在该表中有一个实际的日期列,而不是时间戳。

抱歉,如果这是一个简单的答案,但我已经玩了一段时间了,但无济于事!

4

1 回答 1

1

尝试以下查询:

SELECT *
FROM messages
WHERE time > UNIX_TIMESTAMP(NOW()) - 604800

稍微解释一下:7 天 = 168 小时 = 10 080 分钟 = 604 800 秒。

由于 UNIX 时间戳是自 1970-01-01 00:00:00 以来经过的秒数,因此您必须使用秒来计算。MySQL 中的大多数日期/时间函数在那时是无用的,因为它们只适用于存储日期和时间的原生 MySQL 格式。

于 2013-08-25T16:47:07.083 回答