mySQL - SELECT Sortierung über Teile eines VAR CHAR

BitMan

Erfahrenes Mitglied
Hi Tutorialer,

ich habe eine mySQl Tabelle in der ein Feld mit Datum und Uhrzeit als VarChar existiert.

Nun möchte ich dieses sortieren. Da es sich hier wie geschrieben um ein VaarChar handelt, kann ich nicht über Datumsfunktionen gehen. Nun suche ich nach einem Weg Teile des Varchar über eine substr-ähnlihe Funktion zu sortieren. Gibt es so was in mySQL?

Beispiel:
VARCHAR Datum tt.mm.jjjj HH:MM:SS

order by substr(datum, 6,4), substr(datum, 3,2), substr(datum, 0,2)

cu s00n
BitMan
 
An Deiner Stelle wuerde ich zu der Tabelle eine neue Spalte z.B. DatumTxt hinzufügen, in der Du das Datum in der Form JJJJ-MM-TT:HH:mm:ss einträgst
Diese könntest Du dann einfach sortieren.

Oder bist Du zwangsweise an die angegebene Form gebunden?

vop
 
Grundsätzlich kannst Du auf diese Weise sortieren, was Du mit einem Blick in die Doku oder probieren auch festgestellt hättest.
Wenn Du selber Einfluss auf die DB-Struktur hast, wäre es auf jeden Fall sinnvoller, das ganze auf ein DATETIME zu ändern.

Gruß hpvw
 
vop hat gesagt.:
An Deiner Stelle wuerde ich zu der Tabelle eine neue Spalte z.B. DatumTxt hinzufügen, in der Du das Datum in der Form JJJJ-MM-TT:HH:mm:ss einträgst
Diese könntest Du dann einfach sortieren.

Oder bist Du zwangsweise an die angegebene Form gebunden?

vop


klar kann ich ein DateTime Feld hinzufügen oder das bestehende ändern. Aber dann müsste ich alle Datensätze umändern und alle Scripts die darauf zugreifen.

Einfacher ist eine SubStr() Sortierung über TimeString, wenn auch nicht Performance-Orientiert!

LG BitMan
 
hpvw hat gesagt.:
Grundsätzlich kannst Du auf diese Weise sortieren, was Du mit einem Blick in die Doku oder probieren auch festgestellt hättest.
Wenn Du selber Einfluss auf die DB-Struktur hast, wäre es auf jeden Fall sinnvoller, das ganze auf ein DATETIME zu ändern.

Gruß hpvw

Danke, den Blick in die Doku hatte ich bereits. Aber LIKE '%xx%' bringt mir nix, da ich nicht nach speziellen Ausdrucksteilen suche, sondern nach Teilen des Ausdrucks sortieren möchte!
 
also bei mir (mySQL 5.0) funktioniert das so:
Code:
select * from tabelle order by substr(datum,7,4),substr(datum,4,2),substr(datum,1,2);
welche Version hast du denn?
 
ninguno hat gesagt.:
also bei mir (mySQL 5.0) funktioniert das so:
Code:
select * from tabelle order by substr(datum,7,4),substr(datum,4,2),substr(datum,1,2);
welche Version hast du denn?

OK, habs gefunden. Nachdem Du auch mit substr arbeiten wolltest, hab ich noch mal gesucht. es geht, muss aber substring heissen anstatt substr!
 
Zurück