我的网站上有一个模块,显示过去30天的收入。我的问题是我希望所有收入按日分类,而不是24小时。
这是我的代码:
$days = array(29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0);
foreach($days as $day)
{
$daybefore = $day -1;
if($day == 0)
{
$query = "SELECT SUM(earnings)
FROM earnings
WHERE `timestamp` <= CURRENT_DATE + INTERVAL
AND `timestamp` > CURRENT_DATE + INTERVAL -1 DAY";
}
if($day == 1)
{
$query = "SELECT SUM(earnings)
FROM earnings
WHERE `timestamp` <= CURRENT_DATE + INTERVAL -" . $day . "
AND `timestamp` > CURRENT_DATE + INTERVAL -" . $daybefore . " DAY";
}
问题在于,它会在完成查询后的24小时内获取所有数据。我想要的数据是:
今天=从一天开始的所有数据。 今天=从那天开始到当天结束的所有数据。 等等。
感谢您的任何建议。
答案 0 :(得分:1)
首先,当你完全没必要时,你在代码中进行循环。让SQL做的工作!您可以使用date()
函数来获取日期时间的日期部分。
以下查询将这些内容放在一起以获得最近30天的收入:
$query = "SELECT date(timestamp) as thedate, SUM(earnings)
FROM earnings
where date(timestamp) >= date(CURRENT_DATE) - interval 30
group by date(timestamp)
";