我的数据库中有多个姓名和日期,我正在寻找一种只查看个人姓名的方法,如果他们的最后联系日期超过6个月,则只显示该名称。< / p>
我知道如何使用以下方式查看条目一次:
$xyz= $db->query("SELECT * FROM dbname GROUP BY name");
我也知道如何使用以下方式查看不到6个月的日期:
if (strtotime($xyz['date']) <= strtotime("-6 months")) {
do stuff;
}
但我无法想出一种方法来组合它们。
答案 0 :(得分:3)
Canvas.Left/Top
答案 1 :(得分:2)
除了SKY的原创。回答,你想要MAX(最近的)日期是&lt; (早于)6个月。
您可能不需要使用此方法进行GROUP BY,因为只有一行应该具有最大日期。
SELECT *
FROM dbname a
WHERE dateCol < DATE_SUB(now(), INTERVAL 6 MONTH)
AND dateCol = (SELECT MAX(dateCol)
FROM dbname b
WHERE b.name = a.name)
答案 2 :(得分:0)
看看这个小提琴:http://sqlfiddle.com/#!9/a581b/6
SELECT
*
FROM
dbname
WHERE
{YOUR_DATETIME_FIELD} <= NOW() - INTERVAL 6 MONTH
GROUP BY
name
答案 3 :(得分:0)
如果用户姓名的最后联系日期超过6个月但不少于6个月之前,这将向您显示
SELECT name
FROM dbname
WHERE dateCol < DATE_SUB(now(), INTERVAL 6 MONTH)
AND name NOT IN (SELECT name FROM dbname WHERE dateCol > DATE_SUB(now(), INTERVAL 6 MONTH))
GROUP BY name