String in DATE Format ändern.

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • String in DATE Format ändern.

    Hallo zusammen,

    Ich habe für ein Projekt eine Datenbank übernommen, die Standartmäßig alle Datumsformate in einem String abgelegt haben.

    z.b. 12.10.1995

    So ist es auch als VARCHAR in der MySQL Datenbank abgelegt.
    Jetzt sagte man mir, das auch nach Datum sortiert werden muss, was dazu führt, das die VARCHAR Variante unbrauchbar wird und ich irgendwie alle Datum-Einträge in DATE umwandeln muss.

    Meine Frage ist jetzt, wie mach ich das, ohne das irgendwelche Daten verloren gehen? Es handelt sich um über 4000 Datenbankeinträge, wo ich unmöglich alles von Hand ändern kann.

    Gibt es eine Möglichkeit, einfach das VARCHAR in DATE in der Datenbank zu ändern, mit einer zusätzlichen Option, wo die Formatierung der jetzigen Datumsangaben beibehalten werden kann?

    ##.##.#### oder so ? ... Ich kenn mich da leider nicht aus.

    Vielen Dank im Vorraus.

    Terra

  • #2
    Hallo,

    Code:
    update `TABELLE`
    set `SPALTE` = concat_ws(
    	'-',
    	substring_index(`SPALTE`, '.', -1),
    	substring_index(substring_index(`SPALTE`, '.', 2), '.', -1),
    	substring_index(`SPALTE`, '.', 1)
    );
    alter table `TABELLE` change `SPALTE` `SPALTE` date not null;
    Du musst nur noch die Platzhalter TABELLE und SPALTE ersetzen.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Dankeschön,

      habe grade auch dieses gefunden:

      PHP-Code:
      UPDATE tabelle SET neues_datum STR_TO_DATE(datum,"%d.%m.%Y"
      Muss noch deine Funktion ein wenig Verstehen, da diese ziemlich interessant aussieht. Sehe ich das Richtig, das ich mit deiner Funktion mir den Weg erspaare, eine zusätzliche Tabelle anzulegen und die Werte mit einem Rutsch umwandel ? Kann ich nach dem Umwandeln einfach das Feld von VARCHAR in DATE ändern ?

      EDIT: Sehe grade, das deine Funktion ja schon automatisch das Feld in DATE ändert. Asche über mein Haupt ^^

      Ist ja nicht so, das ich nur ein Datumsfeld habe

      Terra

      Kommentar


      • #4
        Achso, an str_to_date hatte ich gar nicht gedacht

        Jedenfalls, wenn du mehrere Spalten hast, führst du das ganze einfach mehrmals aus – jedes mal mit einem anderen Namen für SPALTE.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Nichts desto trotz, eine feine Sache deine Funktion. Ein wenig aufwändiger aber dafür erspaar ich mir dennoch die Arbeit jeweils eine neue Spalte anlegen zu müssen.

          Ich danke dir vielmals !

          EDIT: Oh, sehe grade, das es doch nicht so gut war. Alle Datumseinträge sind jetzt 2000-05-30 ... da stimmt was nicht.

          Terra
          Zuletzt geändert von terra75; 02.06.2010, 15:09.

          Kommentar

          Lädt...
          X