problem mit sortieren

blubber

Erfahrenes Mitglied
Hi,

ich hab in einem script mehrere Events mit einem Datum, welches immer so aussieht:

TT-MM-JJJJ

also z.B. 27-04-2002

Nun möchte ich nach Datum sortieren lassen, jedoch sortiert er immer nur nach der ersten Zahl, also nach dem Tag. Wie kann ich das machen, dass nach dem wirklich kompletten Datum sortiert wird ??

bye
 
es wäre viel besser wenn du in deinetabelle einen timestamp einträgst, den kannst du ganz leicht in ein datum umwandeln und auch besser sortieren..
 
Hi,

zeig doch mal deinen Codeschnipsel. Dann kann man dir eher helfen. Falls das ganze Über MySQL läuft und dein Feld ein "Date" Feld ist sollte das mit dem Sortieren eigentlich korrekt funktionieren.


medicus
 
da gibts nur ein problem,

erstens sind die events schon eingetragen, das heisst, ich kann jetzt keine timestamps eintragen, und zweitens kann es sein, dass man heute ein event von gestern einträgt, und morgen eins von vor 2 wochen, also würde der timestamp nicht stimmen.

aber das muss doch irgendwie möglich sein.

bye
 
@medicus

ich hab einfach in der event tabelle eine spalte für Datum, die spalte heisst auch "datum"

Es wird jedoch nicht automatisch das Datum hinzugefügt, sondern man trägt von hand in ein Textfeld das Datum ein. Weil, wie ich schon sagte, kann es sein, dass man ein Event eintragen muss, das eben schon 2 wochen alt ist, deswegen kann der nicht automatisch das aktuelle Datum eintragen.

Ich hab also im Formular einfach ein extra textfield wo man das Datum in dem Format TT-MM-JJJJ einträgt.

wenn jetzt z.B. diese 3 Datume drinstehn:

13.05.2002
18.02.2000
30.01.1999

und ich mach "order by datum DESC", dann erhalte ich

30.01.1999
18.02.2000
13.05.2002

Was aber garnicht stimmt, weil ja 1999 das erste sein müsste. er vergleicht also nur die erste Zahl, er hat nach dem Tag sortiert.

bye
 
dann musst du das ganze wohl oder übel mit array machen. alles ersteinmal in drei arrays einlesen und dann erst nach dem jahr, dann nach den monaten und zuletzt nach den tagen ordnen lassen.
 
hmm....könntest du das mit diesen arrays bitte genauer erklären, oder einen code entwurf posten? ich hab davon leider garkeine ahnung.
 
Hm...

*grübel*
Code:
SELECT * FROM tabelle ORDER BY SUBSTRING(datum, 7, 4) DESC, SUBSTRING(datum, 4, 2) DESC, SUBSTRING(datum, 1, 2) DESC
Probier's mal so. Vielleicht klappt's ja.


reima
 
Zuletzt bearbeitet:
whaa ein zauberer!!

genau das hab ich gesucht, vielen dank :]

scheint zu klappen, soweit die events im selben jahr liegen.. Ich hab das ganze jetzt auf ASC gestellt, da der nächste event immer zuerst stehen soll, und nicht der der am weitesten weg ist.
irgendwas stimmt noch nicht:


test
2.11.2002
test


test2
2.11.2003
test


test3
07.12.2002
test


aber die anordnung sollte so aussehen:

test (2.11.2002)
test3 (7.12.2002)
test2 (2.11.200<b>3</b>)

wenn ich mich nicht irre.

ich habe jetzt
$query = "SELECT * FROM tabelle ORDER BY SUBSTRING(datum, 7, 4) ASC, SUBSTRING(datum, 4, 2) ASC, SUBSTRING(datum, 1, 2) ASC";

muss ich nicht alles auf ASC stellen?

[vielleicht ne hilfe, das ganze ist auf http://www.i45.ch ]
 
Zuletzt bearbeitet:
Zurück