Mysql
 sql >> Database >  >> RDS >> Mysql

Come ottenere gli ultimi 7 giorni usando PHP

Il modo più efficace per farlo è usare DateTime invece di 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

Ora puoi formare la tua serie di date in questo modo:

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

Questo inizializza il tuo array a qualcosa come:

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)
}

Ora hai un array con tutte le date possibili negli ultimi 7 giorni e puoi farlo nel tuo ciclo:

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

Non è necessario verificare se la chiave dell'array esiste, poiché è garantita l'esistenza.

Infine, consiglierei di esaminare il DATETIME o altri tipi di colonne di data/ora associati, in quanto sarebbero più utili qui rispetto alla memorizzazione di timestamp UNIX. Potresti utilizzare le funzioni di data/ora di MySQL per selezionare correttamente le righe che stai cercando invece di dover creare un timestamp UNIX ogni volta che desideri eseguire query sui dati in base all'ora.