INTERVAL 8 DAY
的理解,According to this documentation将返回超过8天的任何记录。
在我的声明$moztimestampnow
中,此格式的当前日期2015-05-21
和moztimestamp
与数据库中的列相关,该列包含我需要计算的其他早期日期。
我不确定我是否能够在此声明中使用moztimestamp
作为列名,但它无效。
我如何在几天内获得差异?
$moztimestampnow = date('Y-m-d');
SELECT *,DATEDIFF('$moztimestampnow',moztimestamp) INTERVAL 8 DAYS FROM backlinks WHERE user_id = '$user_id' LIMIT 10
答案 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
条款中的顺序和方向。