[SQL] Sortierung einer Anfrage nach Datum (dd.mm.YYYY)

Dieses Thema im Forum "Webentwicklung" wurde erstellt von joker.org, 22. Juli 2011 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 22. Juli 2011
    Sortierung einer Anfrage nach Datum (dd.mm.YYYY)

    Hallo zusammen,

    ich habe ein kleines Problem.
    Ich habe in einer SQL-Datenbank viele Datensätze und eine letzte Spalte mit dem Datum an dem der Datensatz angelegt wurde.

    Nun möchte ich diese Tabelle sortiert (nach Datum) ausgeben.
    Das Problem ist jedoch, dass mit ORDER BY nur nach dem Tag sortiert wird.

    Die Spalte ist im Format: dd.mm.YYYY also z.Bsp. 04.02.2011

    Bis jetzt wird folgendes ausgegeben:

    02.02.2011
    03.01.2008
    08.05.2012
    usw...

    Wie kann ich das nun lösen?
    Gibt es eine Möglichkeit?

    Danke im Voraus.

    Gruß joker.org
     
  2. 22. Juli 2011
    AW: Sortierung einer Anfrage nach Datum (dd.mm.YYYY)

    Schonmal versucht den Feldtyp in 'Date' umzuwandeln? Heutige Datenbanken konvertieren den Inhalt davor, so dass der neue Wert meist den des vorherigen darstellt.
     
  3. 22. Juli 2011
    AW: Sortierung einer Anfrage nach Datum (dd.mm.YYYY)

    Hi,
    also wenn ich die Struktur auf DATE umstelle dann stimmt kein einziges Datum mehr.
    Dann beginnen die Werte beim Jahr 2020...
    Gibt es noch eine andere Möglichkeit?

    Danke.

    Gruß joker.org
     
  4. 22. Juli 2011
    AW: Sortierung einer Anfrage nach Datum (dd.mm.YYYY)

    Dann solltest du den Inhalt korrekt formatieren. Zu welchem genau weiß ich gerade nicht ,aber vermutlich ist's ISO-8601.

    Alternative (aber hungriger) ist, dass du es on-the-fly konvertierst und danach sortierst, beispiel

    Code:
    ...
    ORDER BY STR_TO_DATE(myStrDateField, '%d.%m.%Y')
    
     
  5. 24. Juli 2011
    AW: Sortierung einer Anfrage nach Datum (dd.mm.YYYY)

    Hallo zusammen,

    einen String während einer Abfrage zu konvertrieren um eine Sortierung hinzubekommen, halte ich für schwierig, da dies nur mit wenigen Datensätzen performant bleiben wird.

    Ich würde in diesem Fall in der Tabelle ein zweite Spalte anlegen, diese mit den Daten der ersten Spalte befüllen. Bei dem "Protieren" der Daten aus der ersten Spalte in die zweite würde ich die Formatierung der Daten konvertieren.

    Dabei sollte (einmalig) etwa so etwas passieren:

    Code:
    ALTER TABLE xxx ADD COLUMN Date2 date NULL;
    UPDATE xxx SET Date2 = STR_TO_DATE(Date1, '%Y-%m-%d')
    Danach kann man die erste Spalte löschen und die zweite mit dem Namen der ersten benennen.

    Letztenendes ist dann noch sicherzustellen, dass die neue Spalte mit korrekten Daten befüllt wird. Da scheint ja schon beim Insert was schief zu laufen, wenn man nicht danach sortieren kann.

    Hat man diese Schritte befolgt, kann man ganz normal nach der Datumsspalte sortieren, z.B.:

    Code:
    ORDER BY DateColumn DESC
    Hoffe das hift.
    MaxDev
     
  6. 24. Juli 2011
    AW: Sortierung einer Anfrage nach Datum (dd.mm.YYYY)

    Hallo MaxDev,

    danke für deine Antwort.
    Dann werde ich das jetzt einmal versuchen.

    Gruß joker.org
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.