Order by

PatrickB

Well-known member
ID: 137508
L
24 April 2006
496
13
Hi,

ich will mehrere Einträge sortiert aus einer Datenbank ausgeben.
Das mache ich mit "ORDER BY DESC". Nun habe ich aber das Problem, dass die Spalte, nach der sortiert werden soll, einen Timestamp enthält der aber als Varchar gespeichert wird. Jetzt will ich die Einträge aber geordnet nach der Größe des Timestamp haben.

Tabelle:

ID (integer) | time(varchar)
-----------------------------
1 | 1255336200
-----------------------------
2 | 1255199400
-----------------------------

Jetzt liefert er mir zuerst den 2. Eintrag, aber nach der Größe soll er mir zuerst den 1. Eintrag liefern, also muss ich ihm irgendwie sagen, dass er time nicht als varchar sondern als integer behandeln soll.

Oder gibt es für so einen Timestamp ein bestimmtes Format in MySQL? Das Format "Timestamp" speichert das ja irgendwie als 00-00-00 oder so ähnlich, aber das will ich nicht.


Danke schonmal für eure Hilfe,

Gruß PatrickB
 
gib uns doch mal die gesammte Abfrage.

Normalerweise musst du die Spalte noch mitangeben, nach der sortiert werden soll. Also Beispiel: "SELECT * FROM `tabelle` ORDER BY spalte2 DESC". Dann sortiert er nach der 2. Spalte absteigend.
 
Nun habe ich aber das Problem, dass die Spalte, nach der sortiert werden soll, einen Timestamp enthält der aber als Varchar gespeichert wird.
:wall:
immer erstmal alles in varchar reinhauen gell? Das der Unix-Timestamp ne Zahl ist, ist irrelevant :ugly:

Als Q&D sollte das aber funktionieren:
Code:
ORDER BY CAST(time AS INTEGER) DESC


Oder gibt es für so einen Timestamp ein bestimmtes Format in MySQL? Das Format "Timestamp" speichert das ja irgendwie als 00-00-00 oder so ähnlich, aber das will ich nicht.
MySQL speichert es auch als Unix-Timestamp ;) Es gibt die Daten nur formatiert aus.
Mit FROM_UNIXTIME() und UNIX_TIMESTAMP() kannst du dann auch in PHP mit Unix-Timestamps arbeiten.
 
Okay, jetzt weiß ich bescheid, dankeschön :D

Ich dachte, dass wenn ich es als Zahl speichere, mehr Speicherplatz brauchen würde, da die Zahl ja so lange ist.

Edit: Das mit dem Cast funktioniert nicht =(
 
Zuletzt bearbeitet:
Ich dachte, dass wenn ich es als Zahl speichere, mehr Speicherplatz brauchen würde, da die Zahl ja so lange ist.

verstehe zwar nicht viel von mysql und Datentypen (also wie viel Speicher sie endgültig brauchen) aber der gesunde Menschenverstand widerspricht da doch schon:

Integer: 0-9 also 10 Möglichkeiten / Zeichen
Varchar: 0-9 a-z usw... also über (mit Sonderzeichen weit über) 36 Möglichkeiten / Zeichen

also logisch das integer weniger Speicher braucht als varchar.


Edit: Das mit dem Cast funktioniert nicht =(

dann mach nen integer draus? Timestamp ist nun mal int hab es ja oben widerlegt

mfg

chris
 
verstehe zwar nicht viel von mysql und Datentypen (also wie viel Speicher sie endgültig brauchen) aber der gesunde Menschenverstand widerspricht da doch schon

:arrow:Numeric Types

warum und wieso die soviele Zahlen in sowenig Byte speichern können, spar ich mir mal, interessiert meistens eh kein Schwein :biggrin:
Und wer es doch wissen will, findet im Netz genug dazu (Zweikomplementzahl)
 
Hab jetzt noch eine weitere Frage.
Und zwar hab ich in MySql eine Spalte in der From Zahl1:Zahl2 .
Jetzt möchte ich die Datensätze zuerst nach Zahl1 ordnen und danach nach Zahl2.
Wie extrahiere ich also die zwei Zahlen so, dass ich sie bei der Select abfrage entsprechend sortieren kann?