2016-06-23 6 views
0

Ich versuche, die Datenmenge für die letzten 30 Tage zu erhalten.Wie SQL Query von den letzten 30 Tagen bis jetzt verringern?

SELECT (Now() - interval 1 month), 
    Count(flightid) AS count 
FROM flight 
WHERE flightstatus = 0 
    AND flightvisibility = 1 
    AND flightvaliddate > Now() 
    AND flightvaliddate >= (Now() - interval 1 month) 

Gerade jetzt das funktioniert ok und es mir nur 1 Zeile ist zu geben, die zum gleichen Tag des letzten Monats entspricht.

Was ich möchte ist, um die restlichen Daten von jedem Tag bis jetzt zu erhalten. Wie kann ich das machen?

Ich benutze MySQL.

+0

Mit welcher Version von SQL arbeiten Sie? Sie werden verschiedene Antworten auf verschiedene Systeme erhalten. –

+0

@RichBenner Ich benutze MySQL. Bearbeitet die Frage –

+0

Sie erhalten Daten nur dann, wenn das 'flightValidate' größer als' now' ist, weil 'AND flightvaliddate> Now() AND flightvaliddate> = (Now() - Intervall 1 Monat)'. Btw, ist 'flightvalidate' von' timestamp' Datentyp? – 1000111

Antwort

0

Die Bedingung in der WHERE Klausel ist falsch.

Und da Sie Tag-weise Daten der letzten dreißig Tage bis jetzt wollen, dann müssen Sie GROUP BY verwenden müssen.

SELECT 
    DATE(flightvalidate) AS flightValidateDate, 
    Count(flightid) AS count 
FROM 
    flight 
WHERE 
    flightstatus = 0 
    AND flightvisibility = 1 
    AND DATE(flightvaliddate) >= CURDATE() - INTERVAL 1 MONTH 
GROUP BY flightValidateDate 
ORDER BY flightvalidate 
+1

Funktioniert gut für mich, danke! –

Verwandte Themen