Fred Furunkelstein 2012: Datum sortieren

Beitrag lesen

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.

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.

3.)
Es handelt sich um einem grundlegenden Designfehler, der definitiv weitere Probleme nach sich ziehen wird.

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 set datum=STR_TO_DATE(text, '%d.%m.%Y');

Das neue Datumsfeld ist mit einem Index zu versehen.

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.

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.

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!

Fred