Order by Datum (varchar)?
Möchte ich order by Datum.
z.B.
table_date
February 2011
January 2011
December 2010
Hab ich schon versucht:
SELECT distinct(table_date) FROM tables ORDER BY table_date DESC
bur funktioniert es nicht.
Bekomme ich diese statt:
January 2011
February 2011
December 2010
Können Sie mir bitte helfen?
Versucht, die, um mit DATE_FORMAT? Dies kann die Abfrage handle der Reihenfolge durch, wie ein Datum anstelle einer Zeichenfolge. Habe es noch nicht getestet aber so nicht zu 100% sicher, dass Sie es lösen
Wenn table_date ist ein varchar, der Reihenfolge nach wird Reihenfolge alphabetisch
Wenn table_date ist ein varchar, der Reihenfolge nach wird Reihenfolge alphabetisch
InformationsquelleAutor Jonathan | 2011-02-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie bestellen möchten, indem Sie Datum, speichern Sie es als einen Zeitpunkt, nicht einen string. Es sei denn, Ihr Datum ein string ist von der form
yyyy-mm-dd
, wird es nicht die Art, wie Sie es wollen.Datenbanken sind schwer genug zu funktionieren, ohne die Leute, die es härter, und Sie sollten bestrebt sein, so viel wie möglich zu vermeiden, was ich nennen möchte SQL-gymnastik.
Speichern Sie es als Datum, dann, wenn Sie müssen, verwenden Sie Datums-Funktionen, um es in der form
February 2011
.Es wird viel leichter gehen, der Weg als das, was Sie zu tun versuchen.
Selbst wenn Sie nicht ändern Sie die aktuellen Spalten aufgrund von code-Einschränkungen, können Sie immer fügen Sie eine weitere Spalte in der Datenbank, wie
TABLE_DATE_AS_DATE
und in einer insert/update-trigger zum Auffüllen, basierend aufTABLE-DATE
.Dann nur:
oder etwas ähnliches, um den trigger auszulösen, die für alle Zeilen.
Dann Ihre Abfrage können immer noch bei
table_date
aber verwendentable_date_as_date
für die Bestellung. Das ist ein Durcheinander natürlich, aber ich habe die tricks verwenden wie in der Vergangenheit, wenn es unumgänglich war, konnte der code nicht ändern, also mussten wir greifen, um DBMS-Tricks.vielen Dank für Ihre Weisheit 🙂
InformationsquelleAutor paxdiablo
Wenn Sie speichern müssen die Daten in einem
varchar
die, wie andere darauf hingewiesen, nicht zu empfehlen, den Sie verwenden könnten:InformationsquelleAutor Tomas
Speichern Daten als DATUM, nicht als VARCHAR, das ist ein großer Fehler. Verwenden STR_TO_DATE() konvertieren Sie Ihre Inhalte. Wenn Sie fertig sind, können Sie bestellen, indem Sie Daten ohne Probleme.
InformationsquelleAutor Frank Heikens
Datum sollte gespeichert werden als Datum und nicht
VARCHAR.
Angenommen, Sie haben
table_date
im folgenden format(DD-MM-YYYY)
Nun können Sie durch ausführen von order by-Klausel in der folgenden Weise
Ich bezweifle, ob die Ausgabe wird in einer geordneten form
Ohk. Was sollte getan werden, auf das dann ?
Erstellen Sie eine neue Spalte mit DATUM als Datentyp, aktualisieren Sie alle Datensätze unter Verwendung der alten Inhalte und str_to_date(), das Ergebnis testen, löschen Sie die alte Spalte. VARCHAR ist nutzlos für Termine.
InformationsquelleAutor sgokhales