Nach Datum sortieren funktioniert nicht!

uwee

Erfahrenes Mitglied
Hallo!

Es ist einfach erklärt: Ich habe auf meiner Homepage ein News-System... Ich kann den User entscheiden lassen, ob die neusten News oben oder unten stehen.

Die Auswahl der News erfolgt folgendermaßen:
PHP:
$sql="SELECT * FROM `dsa_news`"  .
"WHERE data LIKE '%%%' ".
"ORDER BY data desc, zeit desc";

Das ist der Zustand, wenn die neusten News oben stehen sollen. Und genau da ist das Problem:

Ich habe nun News von 17.03.2005 und einmal vom 25.02.2005
Die vom 25.02. stehen über den anderen. Ich bin der Meinung, dass liegt am Monatstag.
Ich möchte es aber RICHTIG sortiert haben...

Das Datum und die Uhrzeit, nach der auch (richtig!) sortiert wird, werden per Timestamp beim erstellen der News erfasst:
PHP:
$timestamp = time();
$data = date("d.m.Y",$timestamp);
$zeit = date("H:i",$timestamp);

Wie bekomme ich es hin, dass die Daten richtig sortiert werden:
17.03.2005
25.02.2005
so sollte es richtig aussehen!

UweE

Edit: typ des feldes, in dem das Datum steht ist VARCHAR, weil date ein falsches Format liefert, ich möchte ja die deutsche und nicht die amerikanische Schreibweise!
Er müsst also erst das Jahr, dann den Monat und dann den Tag sortieren...
 
Zuletzt bearbeitet:
Trag halt gleich den Timestamp in die Datenbank ein
PHP:
$sql="SELECT * FROM `dsa_news`"  .
"WHERE data LIKE '%%%' ".
"ORDER BY time_stamp desc";
Edit: typ des feldes, in dem das Datum steht ist VARCHAR, weil date ein falsches Format liefert, ich möchte ja die deutsche und nicht die amerikanische Schreibweise!
Er müsst also erst das Jahr, dann den Monat und dann den Tag sortieren...
Das wurde hier doch schon bis zum Erbrechen durchgekaut, dass man in die Datenbank die zum Rechnen und Sortieren geeigneten Formate einträgt und diese bei der Ausgabe dann in unser dafür absolut ungeeignetes deutsches umformatiert!

Kannst Dir dann auch noch diverse Grundsatzdiskussionen durchlesen ob für Dich eher der UNIX-Timestamp oder das date_time-Format geeignet ist.
 
Ich nutze generell immer als Datentyp DATE, TIME oder DATETIME, da ich keine Lust habe mit Timestamps rumzurechnen und damit auch das Geburtsdatum Problem vor 1970 gelöst ist.
 
Zurück