mysql abfrage -> nach datum sortieren

Operator_Jon

Erfahrenes Mitglied
HI!
Ich brauche eine mysql abfrage, die nach einem Feld sortiert, das zwar Varchar ist, aber das datum das drinsteht, ist sortiert nach 'dd.mm.yyyy'!
Ist es möglich, das die Abfrage nach diesem Feld sortiert wird, also nach tagen und monaten?

Danke!
 
Tuts ja eben nicht ;)
Sonst würd ich ja hier nicht fragen :)

/€dit:
30.01.2004
17.03.2004
17.02.2004
So sortiert das mit DESC
 
wenn es VARCHAR ist und das Format dd.mm.yyyy dann kannst du es nicht sortieren, du müsstest das ganze im Format yyyymmdd (ohne Punkt) formatieren damit du sortieren könntest, oder es als Date abspeichern...Ich würde dir die Variante mit DATE empfehlen...
 
Ihhh warum haste denn Varchar genommen - macht doch alles schwerer :-(

select * from tabelle order by substr(dfeld,7,4) desc,substr(dfeld,4,2) desc,substr(dfeld,1,2) desc

rein theoretisch :)
 
anderes Format

Keine Ahnung wiseo, aber mein Meister lehrte mir das datum mit date() zu generieren und es als int 11 in der DB zu speichern, weil es viel einfacher sei mit diesem Format weiter zu arbeiten - und da hatte er recht ;)
 
Stimmt, aber ich habs dann eben so gemacht, weil ich das datum eigentlich weiter als text verarbeite :)

Ich probiere
select * from tabelle order by substr(dfeld,7,4) desc,substr(dfeld,4,2) desc,substr(dfeld,1,2) desc
mal aus :D
 
Leider geht es so nicht :(

Sicher das die Schreibweise so ist?

/€dit:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(`datum`,'7','4') desc,substr(`datum`,'4','2') desc,substr(`dat
 
Zuletzt bearbeitet:
Hallo,
ich habe auch ein kleines Problem mit einer Abfrage.
Diese Abfrage lautet:
Code:
SELECT DATE_FORMAT(created,'%d.%m.%Y %H:%m Uhr')created FROM XXXXX ORDER BY created DESC LIMIT 1

Mit dieser Abfrage lasse ich mir den höchsten Wert einer datetime-Spalte (created) der Tabelle XXXXX ausgeben.
Und davon nur einen Wert - mehr möchte ich auch nicht, da ich nur den letzten Wer brauche.
Was ich nun seit der letzen Zeit auffällt:
Mein maximum Wert ist nun der 31.08.2011, und der wirklich letzte Eintrag ist aber von gestern.
Das passiert wohl, da ich die Ausgabe sofort formatiere.
Nun die Frage: Wie stelle ich das so um, das die interne Sortierung zwar nach dem höchsten Datum erfolgt, die Ausgabe aber wie ein deutsches Datum aussieht?
 
Du überschreibst das Feld created in der Ausgabe, da dein Feldalias wieder created heisst.
Also musst du dem Order angeben, dass du das created von der Tabelle meinst. Dazu kannst du den Tabellennamen Oder Tabellenalias vor das Feld schreiben und mit einem Puknt verbinden.
SQL:
... ORDER BY XXXXX.created DESC ....

Nebenbei -> ich verschieb das ganze mal ins DB-Forum, da es alles absolut nix mit PHP zu tun hat
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück