*jiriki*: MYSQL Abfrage

Ich will aus meiner Geburtstags-Tabelle ( Datentyp "Date" ) die Daten so auslesen, dass sie primär nach Monat und sekundär nach Tag sortiert sind. Das Jahr spielt keine Rolle.
Dabei soll die Auflistung bei dem, dem aktuellen Tag am nächsten gelegenen, Geburtstag beginnen.

Jetzt meine Frage: Wie setze ich einen "Startwert" meiner sortierten Abfrage und kann ich überhaupt gezielt auf Monat und Tag zugreifen in einer "SELECT"-Abfrage?

MfG

*jiriki*

  1. hi,

    Ich will aus meiner Geburtstags-Tabelle ( Datentyp "Date" ) die Daten so auslesen, dass sie primär nach Monat und sekundär nach Tag sortiert sind. Das Jahr spielt keine Rolle.

    MONTH(geburtstag), gibt den monat
    DAYOFMONTH(geburtstag), gibt den tag
    Current_Date(), gibt das aktuelle datum

    die drei sachen kombinieren, so wie du es bruchst würde ich sagen.

    Ilja

  2. Hallo,

    Ich will aus meiner Geburtstags-Tabelle ( Datentyp "Date" ) die Daten so auslesen, dass sie primär nach Monat und sekundär nach Tag sortiert sind. Das Jahr spielt keine Rolle.
    Dabei soll die Auflistung bei dem, dem aktuellen Tag am nächsten gelegenen, Geburtstag beginnen.

    Jetzt meine Frage: Wie setze ich einen "Startwert" meiner sortierten Abfrage

    http://www.mysql.de/doc/de/SELECT.html
    ->WHERE
    http://www.mysql.de/doc/de/Using_DATE.html
    Aus Gründen der Annehmlichkeit konvertiert MySQL automatisch ein Datum in eine Zahl, wenn das Datum in einem numerischen Zusammenhang benutzt wird (und umgekehrt).
    http://www.mysql.de/doc/de/Date_and_time_functions.html
    CURDATE()

    und kann ich überhaupt gezielt auf Monat

    http://www.mysql.de/doc/de/Date_and_time_functions.html
    MONTH(datum)

    und Tag zugreifen in einer "SELECT"-Abfrage?

    http://www.mysql.de/doc/de/Date_and_time_functions.html
    DAYOFMONTH(datum)

    viele Grüße

    Axel

  3. Hello,

    Jetzt meine Frage: Wie setze ich einen "Startwert" meiner sortierten Abfrage und kann ich überhaupt gezielt auf Monat und Tag zugreifen in einer "SELECT"-Abfrage?

    Einen "Startwert" kannst Du im Sinne von Index-Unterstützung nicht setzen, da das Datum ja als Ganzes gespeichert und ggf. indiziert ist, Du aber im ersten Schritt nur den Monat haben willst. Wenn diese Anforderung oft vorkommt, kann es bei großen Tabellen (viele Datansätze) daher sinnvoll sein, den Monat in einer eigenen redundanten Spalte abzuspeichern und zu indizieren oder den Typ DayOfYear einzuführen, der dann zugegebener Weise in den Schaltjahren wieder Kummer bereitet.

    Du wirst nicht drum herum kommen, den gesamten Datenbestand der Tabelle ins Filter einzuschließen und durchzuarbeiten.

    Grüße

    Tom