Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So erhalten Sie die letzten 7 Tage mit PHP

Der robusteste Weg, dies zu tun, ist die Verwendung von DateTime statt strtotime :

$now = new DateTime( "7 days ago", new DateTimeZone('America/New_York'));
$interval = new DateInterval( 'P1D'); // 1 Day interval
$period = new DatePeriod( $now, $interval, 7); // 7 Days

Jetzt können Sie Ihr Array von Daten wie folgt bilden:

$sale_data = array();
foreach( $period as $day) {
    $key = $day->format( 'M d');
    $sale_data[ $key ] = 0;
}

Dies initialisiert Ihr Array zu etwas wie:

array(8) {
 ["Jun 18"]=>      int(0)
  ["Jun 19"]=>      int(0)
  ["Jun 20"]=>      int(0)
  ["Jun 21"]=>      int(0)
  ["Jun 22"]=>      int(0)
  ["Jun 23"]=>      int(0)
  ["Jun 24"]=>      int(0)
  ["Jun 25"]=>      int(0)
}

Jetzt haben Sie ein Array mit allen möglichen Daten der letzten 7 Tage, und Sie können dies in Ihrer Schleife tun:

$display_date = date('M d', $sale['created']);
$sale_data[$display_date] += $sale['amt'];

Sie müssen nicht prüfen, ob der Array-Schlüssel existiert, da er garantiert existiert.

Abschließend würde ich empfehlen, sich die DATETIME anzusehen oder andere zugeordnete Datums-/Zeitspaltentypen, da sie hier nützlicher wären als das Speichern von UNIX-Zeitstempeln. Sie könnten MySQL-Datums-/Zeitfunktionen verwenden, um die gesuchten Zeilen richtig auszuwählen, anstatt jedes Mal einen UNIX-Zeitstempel erstellen zu müssen, wenn Sie Daten basierend auf der Zeit abfragen möchten.