hilker: anzahl der Tage eines Monats ermitteln

hat jemand eine Idee wie man am geschicktesten in MySQL
z.b. aus CURDATE() oder '2005-02-16' die Anzahl der Tage die der Monat hat ermitteln kann? in diesem Fall also 28...?

Ich hab - abgesehen von komplizierten Funktionen und Schleifen in meinem Perl script bisher keine Möglichkeit gefunden. (Arrays mit anzahl der Tage und Schaltjahrberechnung).
Aber dass muß doch einfacher gehen, oder?

Im MySQL Kochbuch von O'Reily wird sowas in Kapitel 5 Beschrieben, leider hab ich die Ausgabe aber nicht mehr :-(

über einen Tip würd' ich mich freuen, danke!

  1. OK, ist ja doch nicht so schwer 'ne... :-)

    SELECT DAYOFMONTH(DATE_ADD("YYYY-MM-01", INTERVAL -1 DAY))
    bringt das richtige Ergebnis...

  2. hat jemand eine Idee wie man am geschicktesten in MySQL
    z.b. aus CURDATE() oder '2005-02-16' die Anzahl der Tage die der Monat hat ermitteln kann? in diesem Fall also 28...?

    Erstelle aus dem Datum den ersten Tag des Monats
    concat(date_format(CURDATE(), '%Y-%m'), '-01').
    http://dev.mysql.com/doc/mysql/en/string-functions.html
    http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html

    Addiere das Interval von einem Monat hinzu.
    date_add(concat(date_format(CURDATE(), '%Y-%m'), '-01'), interval 1 month)
    http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html

    Ziehe hiervon einen Tag ab.
    date_sub(date_add(concat(date_format(CURDATE(), '%Y-%m'), '-01'), interval 1 month), interval 1 day)

    Der Tag des Datums, der sich dadurch ergibt, ist der letzte Tag des Monats, also auch die Anzahl der Tage im Monat.
    dayofmonth(date_sub(date_add(concat(date_format(CURDATE(), '%Y-%m'), '-01'), interval 1 month), interval 1 day))

    viele Grüße

    Axel