Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment obtenir les 7 derniers jours en utilisant PHP

La façon la plus robuste d'y parvenir est d'utiliser DateTime au lieu de 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

Maintenant, vous pouvez former votre tableau de dates comme suit :

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

Ce initialise votre tableau à quelque chose comme :

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

Vous avez maintenant un tableau avec toutes les dates possibles des 7 derniers jours, et vous pouvez le faire dans votre boucle :

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

Vous n'avez pas besoin de vérifier si la clé du tableau existe, car son existence est garantie.

Enfin, je recommanderais de regarder dans le DATETIME ou d'autres types de colonnes de date/heure associés, car ils seraient plus utiles ici que de stocker des horodatages UNIX. Vous pourriez utiliser les fonctions de date/heure de MySQL pour sélectionner correctement les lignes que vous recherchez au lieu d'avoir à créer un horodatage UNIX chaque fois que vous souhaitez interroger des données basées sur l'heure.