• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Datum sortierne ASC aber 0000-00-00 als letztes

Status
Für weitere Antworten geschlossen.

Cheffchen

Senior HTML'ler
Hallo,

der Titel sagt es schon ich möchte bei einer SQL abfrage nach Datum Sortieren, das das Jüngste datum als erstes ist und dann ältere und dann ohne angabe (0000-00-00).
Wie sage ich das beim Sortieren, sortiere aufsteigend aber nicht 0000-00-00?
order by datum ASC sind ja die nullen zuerst.

so soll es sein z.B.:
2009-01-01
2009-01-23
2009-03-02
0000-00-00
0000-00-00
0000-00-00
 
Kannst Du meines Wissens nicht in einem Rutsch erledigen. Entweder 2 sql-Abfragen, also zuerst die ohne 0000-00-00 und danach die mit 0000-00-00. Die andere Variante wäre, die Daten mit ohne Datum (klingt ja doof ;) ) mit einem hohen Wert zu belegen, z.b. 2100-12-31 und bei der Ausgabe der Tabellendaten darauf entsprechend zu reagieren.

Gruß thuemmy
 
schade das es nicht geht

genau das wollte ich, deine zweite version mach ich ja immer mit 2099-12-31.
Aber ich wollt halt irgendwie "SELECT * FROM ADRESSEN where name = $suche order by Datum ASC BETWEEN '0000-00-00' and '9999-99-99'" was natürlich so nicht geht.

Cheffchen
 
Mit UNION vielleicht:
Code:
$abfrage = "SELECT * FROM ADRESSEN WHERE date != '0000-00-00' 
UNION
SELECT * FROM ADRESSEN WHERE date = '0000-00-00' ";
$ergebnis = mysql_query($abfrage);
 
Bin mir nicht 100% sicher und kanns auch grad nich testen, aber ich meine mit ner Umwandlung in UNIX_TIMESTAMP müsste es gehen.

Code:
SELECT field1, field2 
FROM adressen 
ORDER BY UNIX_TIMESTAMP(date) DESC
 
Zuletzt bearbeitet:
Aber er will doch erst die am weitest zurückliegenden und darunter die Nullen.
Oder verstehe ich das nicht?
 
Zuletzt bearbeitet:
neuroleptika: genau,hast mich verstanden.

Werde morgen mal dein code test was da rauskommt, heute sind die finger schon zu schwer :o)
 
Hallo Cheffchen,

versuch mal ob das funktioniert. (ungetestet!)
PHP:
SELECT
	`id`,
	`datum`,
	IF(UNIX_TIMESTAMP(`datum`)>0, 1, 0) AS `tmp`
FROM
	`tabelle`
ORDER BY
	`tmp` DESC, `datum`, `id`
 
Danke

Danke an alle, das hat mich schon ewig gestört und mit phpBuddy Vorschlag geht das super.
Da hät ich schon vor 3 jahre drauf kommen können aber zum Glück gibt es ja das Forum.

Wer es wissen möchte ich mach das jetzt so wenn kein Datum dann gannz hinten aber wenn Datum das kleinste vorn, getestet.
PHP:
SELECT
    *,if('datum' < '0000-00-01',9999-00-00, 'datum') AS `tmpsort`
FROM 
    `tabelle` 
ORDER BY 
    `tmpsort` ASC, `id`
 
Status
Für weitere Antworten geschlossen.

Neueste Beiträge

Zurück
Oben