Problem mit Sortierung nach Datum und Uhrzeit
Onkel Schnitzel
- datenbank
Hallo,
mein Gästebuch sortiert die Einträge nicht richtig. Es wird zwar korrekt absteigend nach dem Datum sortiert, aber bei der Uhrzeit gehts lustigerweise anders herum. So steht ein Eintrag vom "11.04.05 11:00 Uhr" zwar über dem "10.04.05 11:00 Uhr" aber unter dem "11.04.05 10 Uhr". Ich hab das Archiv durchsucht, aber nichts dazu gefunden. Das Datumfeld ist ein TIMESTAMP. So sieht meine sql-Abfrage aus:
$sql2 = "SELECT
ID,
name,
ort,
mail,
DATE_FORMAT(datum, '%d.%m.%y') AS Datum,
DATE_FORMAT(datum, '%k:%i') As Zeit,
DATE_FORMAT(datum, '%w') As tag_ind,
text
FROM
gaestebuch
ORDER BY
datum DESC
LIMIT
$start2, $gb_liste";
Grüße,
Onkel Schnitzel
hi...bin mir nicht sicher..aber es könnte sein, dass es probleme mit "Datum" und "datum" gibt.
bennene doch einmal das formatierte "Datum" zb. "formdate"
ev. bringts ja was
hi...bin mir nicht sicher..aber es könnte sein, dass es probleme mit "Datum" und "datum" gibt.
naja, mein TIMESTAMP-Feld heißt ja nunmal 'datum'. Und wenn ich nach 'datum' sortiere, müßte das eigentlich richtig sein. Ich habs trotzdem mit Deinem Tip versucht, hat leider nicht geklappt. Trotzdem Danke, ich werd nochmal rumprobieren.
Gruß,
Onkel Schnitzel
ja ich dachte auch nicht dass du deine spalte umbenennen sollst, sondern deine formatierung :-)
deine spalte heisst "datum"
die Formatierung heisst "Datum"
und bei "Datum" hast du ja die zeit nicht mehr dabei...ich dachte ev. greifft dann sql auf das "Datum" anstelle der spalte "datum" zurück. aber wie es scheint, ist dem nicht so...tja war ein versuch wert.
deine spalte heisst "datum"
die Formatierung heisst "Datum"
Ja, aber eigentlich unterscheidet PHP doch zwischen Groß-und Kleinschreibung.
Lustigerweise funktioniert die Sortierung auf einmal wieder richtig, obwohl das Script immer noch das Gleiche ist. Sollte der Fehler nochmal auftauchen, werde ichs vielleicht doch nochmal mit einem anderen Namen versuchen.
Beste Grüße,
Onkel Schnitzel
Ja, aber eigentlich unterscheidet PHP doch zwischen Groß-und Kleinschreibung.
bloß dass das kein PHP-Code ist, sondern SQL.
Es wird bei deiner SQL-Abfrage ja auch nur nach dem
Datum sortiert. Füge die Zeit noch dran, dann geht's.
ORDER BY
Datum DESC, Zeit DESC
Wie wäre es, wenn du das Timestamp-Datum erst danach formatierst?
$sql2 = "SELECT
ID,
name,
ort,
mail,
datum,
text
FROM
gaestebuch
ORDER BY
datum DESC
LIMIT
$start2, $gb_liste";
echo DATE_FORMAT(datum, '%d.%m.%y').
DATE_FORMAT(datum, '%k:%i').
DATE_FORMAT(datum, '%w');
Ächm...
Die Formatierung muss dann natürlich mit PHP-Funktionen
http://www.php.net/manual/de/function.date.php
erfolgen und nicht mit DATE_FORMAT.
http://www.php.net/manual/de/function.date.php
erfolgen und nicht mit DATE_FORMAT.
ich wollte es eigentlich schon direkt mit der mysql-Funktion machen. Aber danke für den Link, wenn alle Stricke reißen, werde ich darauf zurückkommen.
gruß,
Onkel Schnitzel
$sql2 = "SELECT
ID,
name,
ort,
mail,
DATE_FORMAT(datum, '%d.%m.%y') AS Datum,
DATE_FORMAT(datum, '%k:%i') As Zeit,
DATE_FORMAT(datum, '%w') As tag_ind,
text
FROM
gaestebuch
ORDER BY
datum DESC
LIMIT
$start2, $gb_liste";
Ich behelf mir in solchen Fällen mit einem Hilfsfeld, da du so nach dem Formatierten Datum sortierst und das geht schief.
SELECT ID, name, ort, mail,
DATE_FORMAT(datum, '%d.%m.%y') AS datum_f,
DATE_FORMAT(datum, '%k:%i') As Zeit,
DATE_FORMAT(datum, '%w') As tag_ind,
text
FROM gaestebuch ORDER BY datum DESC
Struppi.