DATE Formatierung
Malte
- datenbank
0 alpman0 Vinzenz Mai
Hallo,
habe folgendes Statement
SELECT
IF(anfang < CURRENT_DATE(),CURRENT_DATE,anfang) as beginn,
FROM
veranstaltung
WHERE
...
ich habe alles als DATE abgespeichert. Gerne würde ich "beginn" natürlich folgendermaßen formatieren:
SELECT
...as DATE_FORMAT(beginn,'%d.%m.%Y'),
FROM
Aber da bekomme ich immer eine Fehlermeldung:
"MYSQL Error: 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 'DATE_FORMAT(anfang,'%d.%m.%Y'),"
Kann mir jemand helfen, wie ich IF Block und eine schicke Ausgabe des Datums gleichzeitig hinbekomme?
Gruß,
Malte
Hallo Malte,
IF(anfang < CURRENT_DATE(),CURRENT_DATE,anfang) as beginn,
Müssen bei dem zweiten CURRENT_DATE nicht auch Klammern hin?
Viele Grüße,
Stefan
Hallo Malte,
grundsätzlich ist es eine gute Idee, das verwendete Datenbankmanagementsystem (DBMS) inklusive Versionsangabe (bei MySQL besonders wichtig) anzugeben. Glücklicherweise verriet die Fehlermeldung, dass es sich um MySQL handelt - und Dein Problem ist unabhängig von der Version :-)
habe folgendes Statement
SELECT
IF(anfang < CURRENT_DATE(),CURRENT_DATE,anfang) as beginn,
FROM
veranstaltung
WHERE
...
SELECT
...as DATE_FORMAT(beginn,'%d.%m.%Y'),
FROM
Ja natürlich kann das so überhaupt nicht gehen, denn
DATE_FORMAT(beginn,'%d.%m.%Y')
ist kein zulässiger Spaltenname.
Du willst ja auch nicht den Spaltennamen ändern, wofür AS gut ist,
sondern die Formatierung des Inhalts der Spalte:
SELECT
IF( anfang < [link:http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html#id3145406@title=CURRENT_DATE],
DATE_FORMAT(CURRENT_DATE, '%d.%m.%Y'), -- Formatiere den Inhalt
DATE_FORMAT(anfang, '%d.%m.%Y') -- Formatiere den Inhalt
) AS beginn -- der nette Name
FROM veranstaltung
WHERE ...
@alpman:
CURRENT_DATE und CURRENT_DATE() sind Synonyme, somit sind beide Schreibweisen richtig. Es ist meiner Meinung jedoch kein guter Stil, die Schreibweisen zu mischen.
Freundliche Grüße
Vinzenz
Hallo,
herzlichen Dank - so funktioniert es eindwandfrei.
Ja - richtig MySQL ;-). Sorry - ich war so auf das Problem fixiert, dass ich das Wichtigste vergessen habe ;-).
Vielen Dank,
Malte
SELECT
IF( anfang < [link:http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html#id3145406@title=CURRENT_DATE],
DATE_FORMAT(CURRENT_DATE, '%d.%m.%Y'), -- Formatiere den Inhalt
DATE_FORMAT(anfang, '%d.%m.%Y') -- Formatiere den Inhalt
) AS beginn -- der nette Name
FROM veranstaltung
WHERE ...
echo $begrüßung;
SELECT
IF( anfang < [link:http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html#id3145406@title=CURRENT_DATE],
DATE_FORMAT(CURRENT_DATE, '%d.%m.%Y'), -- Formatiere den Inhalt
DATE_FORMAT(anfang, '%d.%m.%Y') -- Formatiere den Inhalt
) AS beginn -- der nette Name
FROM veranstaltung
WHERE ...
Da ja das Ergebnis der IF-Funktion vom Typ DATE ist, kann man die Formatierung auch auf dieses Ergebnis ansetzen. So spart man sich eine Änderungsstelle, falls man das Format mal ändern will.
SELECT DATEFORMAT(IF(...), '...') AS beginn ...
(Außerdem kommt so ein klein wenig klarer zum Ausdruck, dass man das Ergebnis formatiert haben möchte, und nicht etwa zwei unterschiedliche Formatierungen. Dass die Formatierung dann doch gleich ist, sieht man ja erst nachdem man die beiden Formatierungsstrings verglichen hat.)
echo "$verabschiedung $name";