gpt4 book ai didi

php - 从基于当前日期的整月期间选择数据

转载 作者:行者123 更新时间:2023-11-29 02:24:18 24 4
gpt4 key购买 nike

最近接到任务,要写一个报表工具,获取历史数据。但我到了一个我被困住的地步。我无法获取过去整月的数据。

故事:用户会得到一个字段,他可以在其中键入他想要获取(过去几个月的)历史记录的时间,例如:我想要最近 3 个月的数据。他键入他的值,发送数据并(应该)得到这样的输出(因为我们现在是九月):

X data in August,
Y data in July,
Z data in June.

我的查询是:

SELECT * FROM table WHERE (publish_up between date_sub(NOW(), 
INTERVAL ".$history." MONTH)
AND date_sub(now(), INTERVAL " . -- $history . " MONTH))
AND created_by = '$editorID' AND state = 1 AND sectionid in (1,2,3)";

但是有了这个,显然我总是从现在开始获取数据 - 1 个月。因此,我将向用户显示的数据是错误的,因为它从某个月中的某个地方开始,并在另一个月中的某个地方结束。我希望时间段从每月的第一天开始,到每月的最后一天结束。

我的第一个想法是,我可以从当前日期减去当月已经过去的天数以获得上个月的第一天,但​​我不知道该怎么做。我也不知道如何得到那个月的名字。

最佳答案

您可以使用 PHP 函数根据当前日期计算任意日期 mktimestrtotime .

因此,与其使用笨拙、难以理解的 SQL 函数,不如直接在 PHP 中计算所需的时间段:

$period_end = mktime(0,0,0, date('n'), 1, date('Y')); // first of current month, time 00:00:00
$period_begin = strtotime('-3 months', $period_end);

然后您可以将这些嵌入到您的 SQL 查询中,如下所示:

$query = "SELECT * FROM table WHERE publish_up BETWEEN '" .
date('Y-m-d H:i:s', $period_begin) ."' AND '" .
date('Y-m-d H:i:s', $period_end) ."' AND "
"created_by = '$editorID' AND state = 1 AND sectionid in (1,2,3)";

关于php - 从基于当前日期的整月期间选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25743045/

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