# Abfrage SQL YYYY-MM-DD nach Monat filtern - wie?



## Registrierer (20. Januar 2011)

ich habe folgendes Problem, ich habe in meiner mysql Datenbank Spalte Datum mit dem folgenden Format YYYY-MM-DD.

Ich möchte gerne die Abfrage so gestalten, dass ich zum Beispiel nur Datensätze von Februar (02) ausgeben kann usw. gibt es eine Möglichkeit bei der Abfrage aus der Datenbank das zu begrenzen****?

Danke schon mal im Voraus.
Gruß
Helmut


----------



## brunlorenz (20. Januar 2011)

Abfrage Begrenzen: 
	
	
	



```
LIMIT 0,5
```
 Liefert die ersten 5 Einträge (von 0-5)
Das Andere musst du mit PHP bewerkstelligen, oder eine Spalte für den Monat einrichten.


----------



## Strafi (20. Januar 2011)

Wenn dein Datumsfeld in der Datenbank ein richtiges ist, dann kannste das mit between() machen. Willst du es mit PHP machen, dann nimm explode().


----------



## just-click (20. Januar 2011)

Bin mir nicht zu 200% sicher obs stimmt, aber viel einfacher als mit between und explode ist folgendes:

```
"SELECT
*
FROM
tabelle
WHERE
DATE_FORMAT(datum, '%m') = 02";
```

Grad fix getestet, funktioniert, aber halt nur wenn du das Feld auch als 'datetime' kennzeichnest.


----------



## Strafi (20. Januar 2011)

Stimmt für diese eine Abfrage ist das richtig. Möchte ich vielleicht später noch Suchanfragen machen, oder andere Kombinationen aufrufen. Ist between() doch genau richtig und nicht komplizierter als das DATE_FORMAT?

Und wenn ich mich nicht irre, geht between auch ohne das ein Feld als 'datetime' deklariert ist.


----------



## just-click (21. Januar 2011)

Was meinst du mit anderer Suchanfrage? Wenn man es mal nach Tagen/Jahren suchen will, nimmt man eben statt %m, %y oder was auch immer.
Wenn man einen anderen Monat als Februar will, dann kann man das ja Variabel gestalten.
Und wenn man jetzt noch alles aus einem Jahr haben möchte, dann erweitert man einfach den Query

```
"SELECT
// [...]
DATE_FORMAT(datum, '%Y.%m') = '"$Y.'"."'.$monat."'";
```
Gerade wenns ums Datum geht sollte DATE_FORMAT reichen und das mit der datetime Deklarierung war von mir nur eine Faulheitsaussage, es geht natürlich überall wenn man eben das Feld richtig gekennzeichnet hat.


----------



## Yaslaw (21. Januar 2011)

Warum über DATE_FORMAT()?  Es gibt auch MONTH()


----------



## Strafi (21. Januar 2011)

just-click hat gesagt.:


> ... oder was auch immer.



Genau, das sind die Antworten die ich mag.

Mach mal schön weiter, oder wie auch immer du das nennst.


----------



## just-click (21. Januar 2011)

Strafi hat gesagt.:


> Genau, das sind die Antworten die ich mag.
> 
> Mach mal schön weiter, oder wie auch immer du das nennst.


 
Hmm..? Reissen wir jetzt einfach was ausm Zusammenhang?


----------



## Registrierer (21. Januar 2011)

Ich mache es jetzt mit 
WHERE DATUM ='%-02-%,
natürlich ist die 02 eine Variable und das Jahr und den Monat ersetze ich ebenfalls durch Variablen, so ist man sehr flexibel.

Und ja, das Feld ist "date".

Vielen Dank für die Antworten


----------

