sql >> Databasteknik >  >> RDS >> Mysql

Hur man får de senaste 7 dagarna med PHP

Det mest robusta sättet att göra detta på är att använda DateTime istället för 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 kan du skapa din samling av datum så här:

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

Denna initierar din array till något som:

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 har du en array med alla möjliga datum under de senaste 7 dagarna, och du kan göra detta i din loop:

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

Du behöver inte kontrollera om arraynyckeln finns, eftersom den garanterat finns.

Slutligen skulle jag rekommendera att titta på DATETIME eller andra associerade datum/tid kolumntyper, eftersom de skulle vara mer användbara här än att lagra UNIX-tidsstämplar. Du kan använda MySQL datum/tid-funktioner för att korrekt välja raderna du letar efter istället för att behöva skapa en UNIX-tidsstämpel varje gång du vill fråga efter data baserat på tid.




  1. Hur man får in ett värde för trigger

  2. MySQL – Räknar två saker med olika förutsättningar

  3. Varning:mysql_result() [function.mysql-result]:Det går inte att hoppa till rad 0 på MySQL resultatindex 5 i profile.php på rad 11

  4. Stora PHP-arrayer paginering