Mysql和PHP检查姓名是否存在以及最后联系日期


Mysql and PHP checking to see if name exists and last date of contact

我的数据库中有几个名字和日期,我正在寻找一种方法,只查看一次个人的名字,并且只在他们最后一次联系的日期超过6个月时显示该名字。

我知道如何使用只查看一次条目

$xyz= $db->query("SELECT * FROM dbname GROUP BY name"); 

我也知道如何使用查看不到6个月的日期

if (strtotime($xyz['date']) <= strtotime("-6 months")) {
    do stuff;
}

但我就是想不出把它们结合起来的方法。

SELECT * 
FROM dbname 
where dateCol > DATE_SUB(now(), INTERVAL 6 MONTH) 
GROUP BY name

除了SKY的原始答案外,您还希望MAX(最近)日期为<(超过)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)

看看这个小提琴:http://sqlfiddle.com/#!9/a581b/6

SELECT
  *
FROM
  dbname
WHERE 
  {YOUR_DATETIME_FIELD}  <= NOW() - INTERVAL 6 MONTH
GROUP BY 
  name

如果他们最后一次联系的日期是在之前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