0

私のウェブサイトには、過去 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 時間以内にすべてのデータが取得されることです。次のデータが必要です。

今日 = その日の開始からのすべてのデータ。今日 = その日の開始からその日の終了までのすべてのデータ。等。

アドバイスをありがとう。

4

1 に答える 1

1

まず、まったく不要なときにコード内でループを実行しています。SQL に任せましょう!この関数を使用してdate()、datetime の日付部分だけを取得できます。

次のクエリは、これをまとめて、過去 30 日間の完全な収益を取得します。

$query = "SELECT date(timestamp) as thedate, SUM(earnings)
FROM earnings
where date(timestamp) >= date(CURRENT_DATE) - interval 30
group by date(timestamp)
";
于 2013-01-21T03:31:20.497 に答える