Hallo profis, wie sortiere ich eine Deutsches Datum in einer MySql Tabelle?
Im Moment habe ich es so,
Query = "SELECT * FROM " & DBTableName & " ORDER BY LOWER(Datum)"
Funktioniert natürlich nicht richtig, wie kann ich es ändern.
Wenn Du das Datum als Text im Format Jahr-Monat-Tag mit 4 und 2 x 2 Stellen gespeichert hast, sehe ich kein Problem; das Lower( kannst Du auch einsparen, da ja ohnehin nur Zahlen enthalten sind.
So habe ich es in PHP am laufen, bekomme es nur nicht in B4A umgesetzt.
$cdquery="SELECT * FROM newevent ORDER by REPLACE(STR_TO_DATE(Datum, '%d.%m.%Y'),'-','')";
Hallo, danke für den Tipp.
Diese Möglichkeit habe ich auch schon in Betracht gezogen, nur da ich mehrere Datumsfelder habe, nach denen eine Sortierung der DB machbar sein soll wird das recht umständlich.
Ich muss es Morgen mal testen, ob das nicht mit einer Konvertierungsfunktion direkt im SQL-Statement machbar ist (ähnlich wie du es schon versucht hattest).
Ich speichere das Datum im Fomat 20141231 in der Datenbank und benutze zum Anzeigen eine kleine Funktion:
So kann ich einfach sortiern und benötige kein zusätzliches Feld in der Datenbank
B4X:
Sub str2date (wert As String) 'z.B. 20141231
Dim Tag,Monat,Jahr As String
Tag = wert.SubString(6)
Monat= wert.SubString2(4,6)
Jahr = wert.SubString2(0,4)
Return Tag & "." & Monat & "." & Jahr
End Sub
So geht das natürlich auch, aber bei einer langen Liste muss ja ständig das Datum neu umgewandelt werden wenn man es in einer Liste anzeigen will.
Keine Ahnung ob sich das groß auf die Geschwindigkeit auswirkt.