Hi Fred!
Erstmal, Deine Antwort ist (zum Teil) echt gut :-)
Mein Datum steht so in der DB drin: 28.10.2012 usw... leider wird mir das Datum nicht richtig sortiert. Was mache ich falsch?
1.)
Du gibst die Antwort selbst. Du versuchst Text zu sortieren.
gut :-)
2.)
Du solltest mit der Faust auf den Tisch hauen. Da hat jemand RICHTIG Scheiße gebaut, als er die Tabellenspalte als Text anlegte und mit Text statt einem Datum fütterte.
Das haben, je nach Erstelldatum der db schon recht viele gemacht. Also mal halblang an dieser Stelle.
3.)
Es handelt sich um einem grundlegenden Designfehler, der definitiv weitere Probleme nach sich ziehen wird.
Soweit, so richtig. Aber wir wollen ja hier nicht die Dramaqueen machen, oder?
4.)
Um das Problem ein- für allemal zu beheben ist eine Spalte mit dem Datum als Datum hinzuzufügen und die Tabelle automatisch upzudaten:UPDATE
tabelle
setdatum
=STR_TO_DATE(text
, '%d.%m.%Y');
Ok. Jetzt sind wir wieder in einem Boot, wir zwei Beiden *g*
Das neue Datumsfeld ist mit einem Index zu versehen.
Von mir aus.
Es ist festzustellen, welche Programme oder Skripte das Datum als Text eintragen, diese sind anzupassen. Von da an haben alle Ein- und Ausgaben in/aus das/dem neuen Datumsfeld zu erfolgen.
Ok, das eine bedingt das andere...
5.)
Das alles ist sofort zu machen. Meint irgendwer, das man sich das ersparen kann, dann mag das bei 3 Datensätzen scheinbar noch funktionieren. Danach immer weniger, denn jeder Deiner Abfragen quasi die komplette Tabelle durchgerechnet werden, das benutzen eines Index ist nicht möglich.
Dramaqueen *g*
Es sollte sicher gemacht werden.
Aber Panik schieben würde ich auch nicht.
Prüfe, wann Du (unter Bercüksichtigung Deines Datenaufkommens die Zeit dazu hast...und Du hast Zeit, glaube mir...) und mach es dann...
Konsequenz: Die Dauer der Abfragen wird sehr schnell sehr unangenehm. Und weil bis dahin der alte Fehler in noch mehr Skripten verbaut wurde wird die Behebung nur NOCH TEURER!
Dramaqueen ;-)
Gruß, Freak