gpt4 book ai didi

php - MySQL按不同日期选择,有日期限制但没有条目

转载 作者:可可西里 更新时间:2023-11-01 08:21:03 27 4
gpt4 key购买 nike

我想做的是使用 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 自行解决,并使用连接等反复试验,但无济于事。

最佳答案

它应该与 INNER JOIN 一起工作,您可以只使用 DATE(added)代替 DATE_FORMAT() 去除 DATETIME 值的时间部分:

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

关于php - MySQL按不同日期选择,有日期限制但没有条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10116537/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com