2013-01-21 79 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) 
";