2011-09-07 15 views
8

Grazie per aver dedicato del tempo a guardare la mia domanda.Selezionare gli ultimi 7 giorni da Ora() in MySQL

ho questa query 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 . "],"; 

} 

Sto avendo un momento difficile per visualizzare gli ultimi sette giorni da oggi nella query, Ive stato a giocare con:

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

Per this:

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

Ma questo non sembra funzionare.

Qualsiasi aiuto apprezzato.

Grazie

risposta

18

se questo non funziona, di ritorno 0, considerano scambiando gamma le date:

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

Ive ha provato questo ma sembra non produrre alcun risultato \t DOVE (wp_pixelcart_calendar.datefield TRA NOW() e DATE_SUB (NOW() , INTERVAL 7 DAY)) – MattStrange

+0

Se si rimuove questo dalla clausola WHERE, vengono restituiti risultati? In tal caso, sono le date di tali risultati negli ultimi 7 giorni? – Trevor

+0

Ho rimosso il WHERE e lasciato il TRAGUARDO ADESSO() ... e i risultati si presentano ma non negli ultimi sette giorni. Se è utile sto usando questo codice da questo 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

Fare attenzione! Questa risposta è ERRATA. Dovrebbe essere 'DATE_SUB (NOW()' – thelawnmowerman

5

si può solo scrivere:

SELECT * FROM table WHERE date_field > DATE_SUB(NOW(), INTERVAL 7 DAY) 
Problemi correlati