aufsteigende Sortierung von Datumseinträgen
armin
- php
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
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
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