Max: mysql -> datum sortieren

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

  1. 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

    1. 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

  2. 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

  3. 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