Php MySQL按不同日期选择,日期有限制,但不包括条目

Php MySQL按不同日期选择,日期有限制,但不包括条目,php,mysql,pdo,distinct,Php,Mysql,Pdo,Distinct,我要做的是使用php从mysql数据库中的更新表中获取条目。每个条目都附有一个时间戳。首先,我从时间戳中获取10个不同的日期,使用这10个唯一的日期创建一个新数组(我这样做是因为fetchAll将日期放入多维数组),然后执行另一个数据库调用,获取所有具有这些日期的条目。它可以返回10个以上的条目。我希望它有10个不同的日期,而不是10个不同的时间戳 例如,如果2012-03-25出现在不同日期的第一次通话中,它可以找到: 2012-03-25 00:58:53 2012-03-25 00:58:

我要做的是使用php从mysql数据库中的更新表中获取条目。每个条目都附有一个时间戳。首先,我从时间戳中获取10个不同的日期,使用这10个唯一的日期创建一个新数组(我这样做是因为fetchAll将日期放入多维数组),然后执行另一个数据库调用,获取所有具有这些日期的条目。它可以返回10个以上的条目。我希望它有10个不同的日期,而不是10个不同的时间戳

例如,如果2012-03-25出现在不同日期的第一次通话中,它可以找到:

2012-03-25 00:58:53
2012-03-25 00:58:02
2012-03-25 00:57:20
2012-03-25 00:56:35
2012-03-25 00:55:58
2012-03-25 00:53:20
2012-03-25 00:52:32
2012-03-25 00:51:45
因为时间戳是不同的

这是我目前使用的代码,它是有效的

$test = $dbh->getArray("SELECT DISTINCT DATE_FORMAT(added, '%Y-%m-%d') AS added FROM db_updates ORDER BY added DESC LIMIT 0,10");

foreach ($test as $entry) {
  list($date) = $entry;
  $output[] = '\''.$date.'\'';
}  

$test2 = $dbh->getArray("SELECT * FROM db_updates WHERE DATE_FORMAT(added, '%Y-%m-%d') IN (".implode(',', $output).") ORDER BY added DESC");

print_r($test2);
这返回了33个结果

以防万一,我使用的是PDO,而不是php中的mysql函数。代码如下:

public function getArray($query) {
  $result = $this->db->query("$query");
  return $result->fetchAll(PDO::FETCH_NUM);
}
这一切都是100%起作用的,它做了我想要它做的。但是,我的问题是,是否有一种方法来完成这一切,只需要一个MySQL调用,所以我不必在中间调用一个循环两次。
我试图通过搜索google来解决这个问题,并尝试使用联接之类的方法反复尝试,但没有任何效果。

它应该与
内部联接一起工作,您可以使用而不是
DATE\u FORMAT()
来去除日期时间值的时间部分:

SELECT * 
FROM
  db_updates
  INNER JOIN (
    /* Subquery returns most recent 10 dates */
    SELECT DISTINCT DATE(added) AS added FROM db_updates ORDER BY added DESC LIMIT 0,10
  /* JOIN between dates */
  ) datelist ON DATE(db_updates.added) = datelist.added
ORDER BY db_updates.added DESC
完美的谢谢:)我需要再等7分钟才能接受这个答案。