armin: aufsteigende Sortierung von Datumseinträgen

hallo zusammen,

ich möchte eine spalte einer mysql tabelle,
in der datumseinträge stehen z.b. 12.02.2002
aufsteigend sortieren.
mit ORDER BY blabla geht das nicht da wird nur
nach den ersten beiden zahlen sortiert.
 gruss
armin

  1. Hallo Armin!

    [..]

    mit ORDER BY blabla geht das nicht da wird nur
    nach den ersten beiden zahlen sortiert.

    Damit mySQL diese Felder sortieren kann müssen diese als "date" oder "timestamp" vorliegen - welchen Datentyps sind denn deine Datumseinträge in der DB?

    Gruss Sven

  2. Hallo!

    ich möchte eine spalte einer mysql tabelle,
    in der datumseinträge stehen z.b. 12.02.2002
    aufsteigend sortieren.
    mit ORDER BY blabla geht das nicht da wird nur
    nach den ersten beiden zahlen sortiert.

    Das hängt damit zusammen, daß Du für das Datum sicherlich den Spaltentyp VARCHAR gewählt hast. Überführe das Datum in eine Spalte mit dem Typ DATE und Du wirst wunderbar sortieren können.

    Mit folgendem SQL-Statement(s) kannst Du das Datum für den Spaltentype DATE umwandeln und neu in die Tabelle schreiben.

    Deine jetzige Spalte nenne ich mal "alte_spalte";

    // Spalte anlegen
    ALTER TABLE tabelle ADD datum DATE;

    Mit diesem SQL-Statement wird das Datum bei den Punkten auseinader [SUBSTRING_INDEX()] genommen und in seine einzellnen Bestandteile, Tag, Monat und Jahr zerlegt. Mit CONCAT() wird es wieder in die richtige Reihenfolge/Sytax zusammen gebaut.

    // kannst es mal testen
    SELECT CONCAT(SUBSTRING_INDEX(alte_spalte, '.', -1), '-', SUBSTRING_INDEX(SUBSTRING_INDEX(alte_spalte, '.', 2), '.', -1) , '-', SUBSTRING_INDEX(alte_spalte, '.', 1));

    // mit einem UPDATE sieht es so aus
    // so wird jede Zeile abgearbeitet
    UPDATE tabelle SET datum=CONCAT(SUBSTRING_INDEX(alte_spalte, '.', -1), '-', SUBSTRING_INDEX(SUBSTRING_INDEX(alte_spalte, '.', 2), '.', -1) , '-', SUBSTRING_INDEX(alte_spalte, '.', 1));

    Achtung!!!!
    Bevor Du das machst, ein Backup der Datenbank machen, es könnte ja was schief gehen.

    MfG, André Laugks
    L-Andre @ gmx.de