MySQL Datenbank Datumsspalte von dd-mm-yyyy Zu yyyy-mm-dd

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • MySQL Datenbank Datumsspalte von dd-mm-yyyy Zu yyyy-mm-dd

    Hallo Zusammen,

    ich habe in meiner Datenbank eine Spalte, die Daten in der Schreibweise Tag-Monat-Jahr beinhaltet. Mit diesen Daten möchte ich nun arbeiten, indem ich sie in ein Timestamp umwandel.

    Dafür brauche ich die Daten allerdings im Format Jahr-Monat-Tag.

    Nun habe ich mit DATE_FORMAT versucht die Spalte mit den Daten in das gewünschte Format zu bringen...dies gelingt aber nicht ganz, da falsche Werte dabei herauskommen.

    Kennt ihr vielleicht noch eine Möglichkeit, wie ich die Spalte in der Datenbank updaten kann?


    Gruß
    Billie
  • Ich bin mir sicher, es gibt dafür bereits fertige Funktionen von MySQL oder andere, bessere Lösungen. Aber ich würde es das eine mal ganz rasch so lösen:

    Quellcode

    1. $wrong_formatted_dates = array(..);
    2. $formatted_dates = array();
    3. for($i = 0, $num = count($wrong_formatted_dates); $i < $num; $i++){
    4. $split = explode("-", $wrong_formatted_dates[$i];
    5. $formatted_dates[] = $split[2].'-'.$split[1].'-'.$split[0];
    6. }


    Klartext: Du liest die Daten alle aus (beispielsweise in einer Schleife), teilst sie mit explode('-', ..) in drei Teile und fügst diese drei Teile neu zusammen. Dann kannst du sie wieder in die Datenbank speichern.


    lG
  • Danke PHP0Kid für den schnellen Ansatz!

    ich versuche es eben noch mit einem SQl-Befehl:

    UPDATE datumstabelle SET datumsspalte = CONCAT(SUBSTRING(datumsspalte, 7, 4),'-',SUBSTRING(datumsspalte, 1, 2),'-',SUBSTRING(datumsspalte, 4, 2))

    Mit dem Befehl bekomm ich Jahr-Tag-Monat...wisst ihr, was man ändern muss, damit man Jahr-Monat-Tag erhält?


    EDIT: Ich habs...UPDATE vertragsdaten SET vertragsende = CONCAT(SUBSTRING(vertragsende, 7, 4),'-',SUBSTRING(vertragsende, 4, 2),'-',SUBSTRING(vertragsende, 1, 2))

    Damit kann man das Datum konvertieren :)

    Hoffentlich hilft es auch Anderen

    Ich dank dir trotzdem PHP0Kid für deine schnelle Hilfe :thumbup:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Billie ()

  • welchen Typ hat deine "Datumsspalte" denn? char?

    Du könntest es auch mit MySQL's Substring Funktion lösen.

    UPDATE: wir haben zeitgleich geantwortet. Du hast es ja schon fast - du musst nur die Reihenfolge bei dir ändern - im Klartext also die letze 4 mit der 1 vertauschen.

    Quellcode

    1. UPDATE datumstabelle
    2. SET datumsspalte = CONCAT(
    3. SUBSTRING(datumsspalte, 7, 4),'-',
    4. SUBSTRING(datumsspalte, 4, 2),'-',
    5. SUBSTRING(datumsspalte, 1, 2)
    6. )