在SQL查询中使用TimeStampDiff()的问题

时间:2013-08-25 16:38:26

标签: mysql

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

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

1 个答案:

答案 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格式来存储日期和时间。