Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

181
Vistas
Ventas diarias resumidas de los últimos 30 días en el gráfico de Google

Tengo una mesa con ventas. De esta tabla, tomo todos los resultados de los últimos 30 días, sumo los precios con la misma fecha y obtengo esto como una matriz.

SQL:

 SELECT date , price , id , SUM(price) AS daylieprice FROM sales WHERE id = :id AND date BETWEEN DATE_FORMAT(CURDATE() , '%Y-%m-%d') - interval 1 month AND DATE_FORMAT(CURDATE() , '%Y-%m-%d')) GROUP BY date


Así que tengo por ejemplo:
ARRAY ['fecha'] - ARRAY ['precio del día']
"2017-03-29" - "1"
"2017-04-02" - "5"
"2017-04-04" - "3"


El gráfico de Google se ve así:

 ['<? echo date('d', strtotime("-2 day")) ?>', VALUE] ['<? echo date('d', strtotime("-1 day")) ?>', VALUE] ['<? echo date('d') ?> ', VALUE]

¿Hay alguna manera de generar el valor de la matriz de esa manera?

 date('d', strtotime("-2 day") , ARRAY ['daylieprice']); date('d', strtotime("-1 day") , ARRAY ['daylieprice']); date('d', ARRAY ['daylieprice']);

¿Debería significar tomar el valor de la matriz fácilmente con date('d') o date('d', strtotime("-1 day") sin hacer un bucle para cada valor?

¿O tengo que hacer una solicitud de SQL para todos los días?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Se me ocurrió esto. Uso DateTime para dar más control y flexibilidad con los formatos de entrada y salida. Esto recorre su matriz de entrada y resta 2 días de la primera entrada, 1 día de la segunda entrada y mantiene la tercera entrada igual:

 <?php $input = [ [ 'date' => '2017-03-29', 'daylieprice' => 1, ], [ 'date' => '2017-04-02', 'daylieprice' => 5, ], [ 'date' => '2017-04-04', 'daylieprice' => 3, ], ]; $output = []; $number_of_dates = count($input) - 1; foreach ($input as $v) { $date = DateTime::createFromFormat('Ym-d', $v['date']) ->modify(sprintf('-%d days', $number_of_dates)) ->format('Ym-d'); $number_of_dates--; $output[] = "'" . $date . "', " . $v['daylieprice']; }

Esto produce una matriz como:

 Array ( [0] => '2017-03-27', 1 [1] => '2017-04-01', 5 [2] => '2017-04-04', 3 )

Espero que esto ayude y puedas descubrir exactamente cómo implementarlo para resolver tu problema.

Editar: acabo de ver echo date('d' así que tal vez solo desee el día del mes, eso es fácil, puede cambiar ->format('Ym-d'); en el ciclo a ->format('d');

Demostración: https://eval.in/784353

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda