我试图检索上一年12月到本年11月之间的统计数据。表的date
列的数据类型为date
。
下面的SQL工作得很好,但明显的问题是,它只在手动更改年份时才工作。在这个时间段内,一个人如何在一个动态变化的年份实现同样的目标?
SELECT date, SUM(numCalls) AS callTotal FROM callstats_callData
WHERE date BETWEEN '2011-12-01' AND '2012-11-01'
GROUP BY date ORDER BY date
PHP正在从MySQL表中检索数据。
更新
下面的代码可以工作,但我希望有一个基于SQL的解决方案。
$date1 = (date("Y") - 1) . '12-01';
$date2 = date("Y") . '-11-01';
$fetchTotals = $this->contentDB->prepare("SELECT date, SUM(numCalls) AS callTotal FROM callstats_callData
WHERE date BETWEEN ? AND ?
GROUP BY date ORDER BY date");
$fetchTotals->execute(array($date1, $date2));
$totals = $fetchTotals->fetchAll();
工作实例
这是为了检索Total Calls charthere的通话数据。需要循环检索结果,以便显示该时间段内每个月的总计。这个页面目前正在使用上面的PHP和MySQL代码正常工作,只是希望能找到一个基于SQL的解决方案。
最佳答案
这为您选择更新的查询的任意月份值和日期值提供了一点灵活性——正如您在发布的PHP代码中设置的那样:
SELECT date, SUM(numCalls) AS callTotal
FROM callstats_callData
WHERE DATE(date)
BETWEEN CONCAT(YEAR(CURDATE())-1,'-12-01') AND CONCAT(YEAR(CURDATE()),'-11-01')
GROUP BY date ORDER BY date;
关于mysql - 选择上一年12月至当年11月之间的数据,MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13293497/