2017-01-31 3 views
-2

abrufen Ich möchte monatliche Daten mit Anzahl anzeigen. Also habe ich Startdatum und Enddatum. Zwischendurch muss ich den Monat zeigen und zählen. Beispiel: Ich habe eine Tabelle mit Gehaltsangaben.Monat Name und Anzahl (*) in mysql

Salary createddate 
-------------------------------- 
    10,000 1/jan/2017 
    10,000 1/jan/2017 
    10,000 1/jan/2017 
    10,000 1/jan/2017 
    10,000 1/jan/2017 

    10,000 1/dec/2016 
    10,000 1/dec/2016 
    10,000 1/dec/2016 
    10,000 1/dec/2016 

    10,000 1/nov/2016 
    10,000 1/nov/2016 
    10,000 1/nov/2016 
    10,000 1/nov/2016 

Also muss ich

Month  count 
---------------------------- 
    January 5 
    Dec  4 
    Nov  4 

I startdate is 1/nov/2016 and end date 1/jan/2017 haben anzuzeigen. Ich möchte Monatsname suchen und zwischen diesen zwei Daten zählen (Gehalt). Anfangs- und Enddatum kann letztes Jahr/4 Jahre auch sein.

If i dont have data for mentioned dates, i should get month name with count as 0. 

Bitte helfen Sie mir, dies zu finden

+0

ist das createate-Feld ein tatsächliches Datumsfeld oder ein char? – SaggingRufus

+0

Erstelldatum ist das Datumsfeld. aber ich gebe Anfangs- und Enddatum als varchar – IMRUP

+1

Gruppieren mehrere Jahre zusammen? Oder sie getrennt halten wie Jan 2015, Jan 2016? – GurV

Antwort

1

können Sie diese Abfrage versuchen?

select MONTHNAME(str_to_date(createddate,"%d/%b/%Y")),count(*) as count 
     from tableName 
where str_to_date(createddate,"%d/%b/%Y") between '2016-11-01' and '2017/01/01' 
     group by MONTHNAME(str_to_date(createddate,"%d/%b/%Y")), 
    year(str_to_date(createddate,"%d/%b/%Y")) 
+0

können Sie jetzt versuchen? –

+0

OP möchte eine Abfrage, die zwischen 2 Daten sucht und die Ausgabe in seinem Beispiel liefert. Da dies keine Where-Klausel hat, gibt es keine Möglichkeit, den Datumsbereich – SaggingRufus

+0

@SaggingRufus zu erhalten, er kann hinzufügen, wo Bedingung in dieser Abfrage. Ich muss es nicht hinzufügen. Lassen Sie ihn einfach diese Abfrage versuchen –