Datum formatieren

  • Hallo,


    bei MySQL konnte man ja mit folgendem Code das Datum formatieren


    Code
    date_format('user_bday', '%d.%m.%Y') AS 'datum

    Nach der Umstellung auf MySQLi erhalte ich die Fehlermeldung:

    Code
    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 '%d.%m.%Y

    Meine PHP-Version ist die 8.4.3 und MySQL-Version die 8.0.37.


    Wie kann ich das Datum formatieren?



    VG Sven

  • Ich war mal so frei und hab ChatGPT bemüht:


    Der Fehler liegt an der falschen Verwendung von DATE_FORMAT(). In deinem Code steht 'user_bday' als String in Anführungszeichen, wodurch MySQL das als festen Text und nicht als Spaltennamen interpretiert.


    Lösung:


    Verwende den Spaltennamen ohne Anführungszeichen:


    SELECT DATE_FORMAT(user_bday, '%d.%m.%Y') AS datum FROM deine_tabelle;


    Falls user_bday NULL-Werte enthalten kann, stelle sicher, dass sie korrekt behandelt werden:


    SELECT IFNULL(DATE_FORMAT(user_bday, '%d.%m.%Y'), 'kein Datum') AS datum FROM deine_tabelle;


    Falls der Fehler weiterhin besteht, prüfe, ob der Spaltentyp von user_bday tatsächlich DATE, DATETIME oder TIMESTAMP ist. Wenn die Spalte ein VARCHAR enthält, musst du sie vorher mit STR_TO_DATE() umwandeln:


    SELECT DATE_FORMAT(STR_TO_DATE(user_bday, '%Y-%m-%d'), '%d.%m.%Y') AS datum FROM deine_tabelle;

  • bei MySQL konnte man ja mit folgendem Code das Datum formatieren



    date_format('user_bday', '%d.%m.%Y') AS 'datum

    Vermutlich ist das ein Copy-Paste Fehler.

    Spaltennamen wie user_bday gehören nicht in Anführungszeichen ('), dann ist das nämlich ein String (und in dem Fall eine ungültige Datumsangabe).


    Zur Vermeidung von Fehlinterpretation von Schlüsselwörtern setzt man in MySQL DB-, Tabellen- oder Spaltennamen in Backticks (`), nicht in einfache Anführungszeichen (') - das geht beim umkopieren (je nach Quelle und Editor) gerne verloren.


    Korrekt wäre

    Code
    date_format(user_bday, '%d.%m.%Y') AS 'datum'

    oder

    Code
    date_format(`user_bday`, '%d.%m.%Y') AS 'datum'