MYSQL- Abfrage Datumsformat angeben
Meiers Daniel
- php
0 wahsaga0 Meiers Daniel0 wahsaga
Hallo Zusammen!!
Also bin noch Anfänger in Sachen PHP und MYSQL!!! Ich habe eine Datenbank in der in einer Datumsspalte mehre Daten enthalten sind. Nun möchte ich Alle Datensätze auslesen die den gleichen Monat (und evtl gleiches Jahr) haben. Allerding scheint irgendwas an meiner Syntax ( oder auch Logik) nicht zu stimmen!!
SELECT * FROM bericht WHERE DATE_FORMAT(datum, %e-%c-%Y) = MONTH(5-4-2007);
allerdings bringt mir php-myadmin eine Fehlermeldung:
ERROR: Unbekannte Interpunktion @ 52
STR: -%
SQL: SELECT * FROM bericht
WHERE DATE_FORMAT(datum, %e-%c-%Y) = MONTH('5-04-2000')
SQL-Befehl: Dokumentation
SELECT * FROM bericht
WHERE DATE_FORMAT(datum, %e-%c-%Y) = MONTH('5-04-2000')
MySQL meldet: Dokumentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%e-%c-%Y) = MONTH('5-04-2000')' at line 1
Vielen Dank für eure Hilfe!!
hi,
Ich habe eine Datenbank in der in einer Datumsspalte mehre Daten enthalten sind. Nun möchte ich Alle Datensätze auslesen die den gleichen Monat (und evtl gleiches Jahr) haben. Allerding scheint irgendwas an meiner Syntax ( oder auch Logik) nicht zu stimmen!!
SELECT * FROM bericht WHERE DATE_FORMAT(datum, %e-%c-%Y) =
[...]
allerdings bringt mir php-myadmin eine Fehlermeldung:ERROR: Unbekannte Interpunktion @ 52
STR: -%
Wenn du an dieser Stelle die Operatoren - und % verwenden willst, musst du das schon in einer gültigen Kombination tun. (Hinweis: Willst du aber gar nicht - du willst einen Format_string_ übergeben.)
MONTH(5-4-2007);
5 minus 4 minus 2007 ergibt -2006.
Wie willst du aus dieser Zahl einen Monat ermitteln?
Auch hier wieder: Zahl != String.
gruß,
wahsaga
»»Willst du aber gar nicht - du willst einen Format_string_ übergeben.)
MONTH(5-4-2007);
5 minus 4 minus 2007 ergibt -2006.
Wie willst du aus dieser Zahl einen Monat ermitteln?
Auch hier wieder: Zahl != String.
»»
Hi!!
Ok also wenn ich das richtig verstanden habe tausche ich einfach die "-"(wusste überhaupt nicht dass MYSQL dann subtrahiert)durch z.b. "/" tausche sollte es funktionieren??
Bekomme aber immer noch die gleiche Fehlermeldung.... Oder ist noch was anderes an dem Befehl dann falsch??
Gruß
hi,
Ok also wenn ich das richtig verstanden habe tausche ich einfach die "-"(wusste überhaupt nicht dass MYSQL dann subtrahiert)durch z.b. "/" tausche sollte es funktionieren??
Nein.
Du sollst _Strings_ verwenden an Stellen, an denen _Strings_ verlangt werden - und keine unsinnigen Zahlen- oder Operator-Kombinationen.
http://dev.mysql.com/doc/refman/4.1/en/string-syntax.html
gruß,
wahsaga
Ach also:
SELECT * FROM bericht WHERE DATE_FORMAT(datum,'%e.%c.%Y') =
MONTH(5/4/2007);
So gehts, liefert mir allerdings keine datensätze zurück....
Kann es sein dass diese Abfrage nie zum Erfolg führen kann, da
DATE_FROMAT ein datum in FORM von "T.M.JJJJ" zrückgibt
und MONTH lediglich "M"??
Wäre diese Abfrage theoritisch auch erfolgreich??
SELECT * FROM bericht WHERE MONTH(datum) = MONTH(2007-004-05) ??
Gruß
hi,
Ach also:
SELECT * FROM bericht WHERE DATE_FORMAT(datum,'%e.%c.%Y') =
MONTH(5/4/2007);
Ja, fein, jetzt hast du also die Hälfte von dem, was ich dir schrieb, berücksichtigt.
Und jetzt, schlage ich vor, liest du die andere Hälfte auch noch mal aufmerksam.
Kann es sein dass diese Abfrage nie zum Erfolg führen kann, da
DATE_FROMAT ein datum in FORM von "T.M.JJJJ" zrückgibt
und MONTH lediglich "M"??
Wenn du zwei Dinge vergleichen willst, bietet es sich natürlich an, beide in Formaten zu vergleichen, die auch einen _sinnvollen_ Vergleich ermöglich.
Wäre diese Abfrage theoritisch auch erfolgreich??
SELECT * FROM bericht WHERE MONTH(datum) = MONTH(2007-004-05) ??
Nein - sie enthält immer noch den gleichen Fehler, auf den ich dich schon in meiner ersten Antwort hinwies.
gruß,
wahsaga
Sodale vielen Dank für die Hilfe ich glaub ich habs jetzt!!!
Hab festgestellt das ich den ersten Vergleich
gar nicht wirklich brauchen kann...
hier also die finale Lösung mit der alles funzt:
SELECT * FROM bericht WHERE MONTH(datum) = 4; //Für April..
Manchmal stellt man sich eben blöder an wie es sein müsste..
Danke nochmals!!
Gruß
Daniel