从mysql中提取记录,其中2个日期之间的差异大于8天

时间:2015-05-21 23:19:00

标签: mysql

根据我使用INTERVAL 8 DAY的理解,

According to this documentation将返回超过8天的任何记录。

在我的声明$moztimestampnow中,此格式的当前日期2015-05-21moztimestamp与数据库中的列相关,该列包含我需要计算的其他早期日期。

我不确定我是否能够在此声明中使用moztimestamp作为列名,但它无效。

我如何在几天内获得差异?

$moztimestampnow = date('Y-m-d');
SELECT *,DATEDIFF('$moztimestampnow',moztimestamp) INTERVAL 8 DAYS FROM backlinks WHERE user_id = '$user_id' LIMIT 10

2 个答案:

答案 0 :(得分:1)

首先,你误解了文档。 interval关键字用于向日期添加值。如果要过滤数据,则需要使用where子句。

在您的情况下,最好的where子句如下所示:

SELECT bl.*, DATEDIFF('$moztimestampnow', moztimestamp)
FROM backlinks bl
WHERE user_id = '$user_id' and
      moztimestamp <= DATE_SUB(CURDATE(), INTERVAL 8 DAY)
LIMIT 10

这可以利用backlinks(user_id, moztimestamp)上的索引。此外,您可能应该有一个ORDER BY子句。使用LIMIT时会出现这种情况。

答案 1 :(得分:0)

您的语法没有意义。尝试类似:

SELECT *
FROM backlinks
WHERE DATE_SUB(moztimestamp, INTERVAL 8 DAY) > '$moztimestampnow' 
AND user_id = '$user_id'
LIMIT 10

我不遵循您的目标,因此您可能需要更改第一个WHERE条款中的顺序和方向。