2011-09-07 13 views
8

Gracias por tomarse el tiempo para ver mi pregunta.Seleccionando los últimos 7 días desde Ahora() en MYSQL

que tienen esta consulta MySQL:

foreach($wpdb->get_results(
    "SELECT wp_pixelcart_calendar.datefield AS DATE, 
    IFNULL(SUM(wp_pixelcart_daily_sales.quantity),0) AS total_sales 
    FROM wp_pixelcart_daily_sales RIGHT JOIN wp_pixelcart_calendar ON (DATE(wp_pixelcart_daily_sales.order_date) = wp_pixelcart_calendar.datefield) 
    WHERE (wp_pixelcart_calendar.datefield BETWEEN (SELECT MIN(DATE(order_date)) FROM wp_pixelcart_daily_sales) AND (SELECT MAX(DATE(order_date)) FROM wp_pixelcart_daily_sales)) 
    GROUP BY DATE" 
) as $key => $row) { 

echo "<br>". $row->DATE . "',". $row->total_sales . "],"; 

} 

estoy teniendo un tiempo difícil para mostrar los últimos siete días a partir de ahora en la consulta, he estado jugando con:

BETWEEN (SELECT MIN(DATE(order_date)) FROM wp_pixelcart_daily_sales) AND (SELECT MAX(DATE(order_date)) FROM wp_pixelcart_daily_sales)) 

Para esto:

BETWEEN NOW() FROM wp_pixelcart_daily_sales) AND DATE_ADD(NOW(), INTERVAL 7 DAY) FROM wp_pixelcart_daily_sales)) 

Pero esto no parece funcionar.

Cualquier ayuda apreciada.

Gracias

Respuesta

18

si esto no funciona, volviendo 0 resultados, tenga en cuenta el intercambio de rango las fechas:

BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW() 
+0

He intentado esto pero no parece producir ningún resultado \t WHERE (wp_pixelcart_calendar.datefield ENTRE AHORA() y DATE_SUB (AHORA() , INTERVALO 7 DÍA)) – MattStrange

+0

Si elimina esto de la cláusula WHERE, ¿se están devolviendo los resultados? Si es así, ¿las fechas de esos resultados durante los últimos 7 días? – Trevor

+0

Quité el DONDE y dejé el BETWEEN NOW() ... y aparecen los resultados, pero no de los últimos siete días. Si me ayuda, estoy usando este código de este tutorial http://www.richnetapps.com/using-mysql-generate-daily-sales-reports-filled-gaps/ – MattStrange

1
WHERE order_date <= NOW() AND order_date >= DATE_SUB(order_date, INTERVAL 7 DAY) 
+1

¡Cuídense! Esta respuesta es INCORRECTA Debería ser 'DATE_SUB (NOW()' – thelawnmowerman

5

usted podría escribir:

SELECT * FROM table WHERE date_field > DATE_SUB(NOW(), INTERVAL 7 DAY) 
Cuestiones relacionadas