2013-01-21 51 views
0

我的网站上有一个模块,显示过去30天的收入。我的问题是,我希望所有收入都按天分类,而不是24小时。从特定日获取SQL数据

这里是我的代码:

$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)' - 难道不应该是'如果($日== 1) '? –

+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) 
";