sql >> Base de Datos >  >> RDS >> Mysql

Cómo obtener los últimos 7 días usando PHP

La forma más sólida de hacerlo es usar DateTime en lugar 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

Ahora, puede formar su matriz de fechas así:

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

Este inicializa tu matriz a algo como:

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

Ahora tiene una matriz con todas las fechas posibles en los últimos 7 días y puede hacer esto en su ciclo:

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

No necesita comprobar si existe la clave de matriz, ya que se garantiza que existe.

Finalmente, recomendaría buscar en el DATETIME u otros tipos de columnas de fecha/hora asociadas, ya que serían más útiles aquí que almacenar las marcas de tiempo de UNIX. Podría estar utilizando las funciones de fecha/hora de MySQL para seleccionar correctamente las filas que está buscando en lugar de tener que crear una marca de tiempo UNIX cada vez que desee consultar datos basados ​​en el tiempo.