sql >> Database >  >> RDS >> Mysql

Hoe de laatste 7 dagen te krijgen met PHP

De meest robuuste manier om dit te doen, is door DateTime te gebruiken in plaats van 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

Nu kunt u uw reeks datums als volgt vormen:

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

Deze initialiseert je array naar iets als:

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

Nu heb je een array met alle mogelijke datums in de afgelopen 7 dagen, en je kunt dit in je loop doen:

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

U hoeft niet te controleren of de arraysleutel bestaat, omdat deze gegarandeerd bestaat.

Ten slotte raad ik aan om de DATETIME . te bekijken of andere geassocieerde typen datum/tijd-kolommen, omdat ze hier nuttiger zijn dan het opslaan van UNIX-tijdstempels. U kunt MySQL-datum-/tijdfuncties gebruiken om de rijen die u zoekt correct te selecteren in plaats van dat u elke keer een UNIX-tijdstempel moet maken als u gegevens wilt opvragen op basis van tijd.




  1. MariaDB start niet:plug-in 'FEEDBACK' is uitgeschakeld.

  2. MySQL &PHP-parameter 1 als bron

  3. MySQL-query:alle items ouder dan 1 jaar opvragen

  4. Spring-batch met kolomalias als sorteersleutel - onjuist waar-instructie