mysql -> datum sortieren
Max
- datenbank
Hallo,
ich habe folgendes Problem: Ich habe in den Datensätzen einer mysql-Datenbank ein Feld Geburtstag und möchte die Datensätze jetzt danach sortieren. Das ist ja auch eigentlich kein Problem allerdings möchte ich, dass das Geburtsjahr außer Acht gelassen wird, sprich es soll zuerst nach Monat und dann nach Tag sortiert werden. Über eine einfach Verknüpfung "order by dayofmonth and month" klappt es nicht, wie kann ich soetwas realisieren?
Vielen Dank, Max
Hoi,
ich habe folgendes Problem: Ich habe in den Datensätzen einer
mysql-Datenbank ein Feld Geburtstag und möchte die Datensätze
jetzt danach sortieren. Das ist ja auch eigentlich kein
Problem allerdings möchte ich, dass das Geburtsjahr außer Acht
gelassen wird, sprich es soll zuerst nach Monat und dann nach
Tag sortiert werden. Über eine einfach Verknüpfung "order by
dayofmonth and month" klappt es nicht, wie kann ich soetwas
realisieren?
Das geht nur sehr, sehr unfein. Du musst 'DayOfMonth' und 'Month'
mit-selektieren:
SELECT
....,DayOfMonth(datum) AS day,Month(datum) AS month
FROM
tabelle
ORDER BY
day, month
Gruesse,
CK
Halihalo
ich habe folgendes Problem: Ich habe in den Datensätzen einer
mysql-Datenbank ein Feld Geburtstag und möchte die Datensätze
jetzt danach sortieren. Das ist ja auch eigentlich kein
Problem allerdings möchte ich, dass das Geburtsjahr außer Acht
gelassen wird, sprich es soll zuerst nach Monat und dann nach
Tag sortiert werden. Über eine einfach Verknüpfung "order by
dayofmonth and month" klappt es nicht, wie kann ich soetwas
realisieren?
Das geht nur sehr, sehr unfein. Du musst 'DayOfMonth' und 'Month'
mit-selektieren:
Und ich dachte, dass ich da einen ganz klugen Trick gefunden habe ;-)
Na, ja, dann eben ganz wissenschaftlich "mit-selektieren".
Nur noch eine kleine Anmerkung: Bei meiner mysql-Version 3.23.22 funktioniert es auch ohne das mit-selektieren. Da kann man wirklich einfach
... GROUP BY DAYOFMONTH(...) ... schreiben. Faszinieren, nicht?
Viele Grüsse
Philipp
Halihallo
ich habe folgendes Problem: Ich habe in den Datensätzen einer mysql-Datenbank ein Feld Geburtstag und möchte die Datensätze jetzt danach sortieren. Das ist ja auch eigentlich kein Problem allerdings möchte ich, dass das Geburtsjahr außer Acht gelassen wird, sprich es soll zuerst nach Monat und dann nach Tag sortiert werden. Über eine einfach Verknüpfung "order by dayofmonth and month" klappt es nicht, wie kann ich soetwas realisieren?
Hatte mal ein ähnliches Problem. Leider akzeptiert mysql in der ORDER BY - Klausel keine Funktionen, deshalb habe ich mal einen kleinen Trick gefunden:
SELECT Geburtstag, MONTH(Geburtstag) AS '1', DAYOFMONTH(Geburtstag) AS '2' FROM GebiListe WHERE ... ORDER BY '1', '2'
weiss nicht, ob's bei dir klappt, bei mir funktioniert es so. Hier gibt's auch unterschiede in den mysql-Versionen.
Bei den neueren Versionen von mysql sollte es eigentlich auch mit ORDER BY DAYOFMONTH(...) funktionieren.
Hoffe, dass dir das was Hilft und
Viele Grüsse
Philipp
Hallo Max,
ich habe folgendes Problem: Ich habe in den Datensätzen einer mysql-Datenbank ein Feld Geburtstag und möchte die Datensätze jetzt danach sortieren. Das ist ja auch eigentlich kein Problem allerdings möchte ich, dass das Geburtsjahr außer Acht gelassen wird, sprich es soll zuerst nach Monat und dann nach Tag sortiert werden. Über eine einfach Verknüpfung "order by dayofmonth and month" klappt es nicht, wie kann ich soetwas realisieren?
Das sind schon die richtigen Ansaetze, nur muessen diese Funktionen auch angewendet werden. Dieses Beispiel geht von den Daten meines MySQL-Crashkurses aus:
mysql> SELECT * FROM tabelle;
+------+---------+----------+----------+------------+---------+------------+
| nr | vorname | nachname | jahrealt | geschlecht | wohnort | geboren |
+------+---------+----------+----------+------------+---------+------------+
| 1 | Tina | Tiger | 19 | w | Berlin | 1982-10-05 |
| 2 | Harry | Hirsch | 48 | m | Köln | 1953-07-08 |
| 3 | Karl | Fuchs | 25 | m | Halle | 1976-05-28 |
+------+---------+----------+----------+------------+---------+------------+
3 rows in set (0.06 sec)
mysql> SELECT DATE_FORMAT(geboren,'%d.%m.') AS tagmonat FROM tabelle ORDER BY MONTH(geboren), DAYOFMONTH(geboren);
+----------+
| tagmonat |
+----------+
| 28.05. |
| 08.07. |
| 05.10. |
+----------+
3 rows in set (0.44 sec)
mysql>
MfG, Thomas