Kapitel 4: Einf¨uhrung in MySQL: Ein MySQL-Tutorial 149
sterbetag-Wert NULL ist. Dann berechnen Sie f¨ur diejenigen Tiere mit Nicht-NULL-Werten
den Unterschied zwischen sterbetag- und geburtstag-Werten:
mysql> SELECT name, geburtstag, sterbetag,
-> (YEAR(sterbetag)-YEAR(geburtstag)) - (RIGHT(sterbetag,5)<RIGHT(geburtstag,5))
-> AS age
-> FROM pet WHERE sterbetag IS NOT NULL ORDER BY age;
+--------+------------+------------+------+
| name | geburtstag | sterbetag | age |
+--------+------------+------------+------+
| Bowser | 1989-08-31 | 1995-07-29 | 5 |
+--------+------------+------------+------+
Die Anfrage b enutzt sterbetag IS NOT NULL statt sterbetag != NULL, weil NULL ein
spezieller Wert ist. Das wird sp¨ater erkl¨art. Siehe Abschnitt 4.3.4.6 [Mit NULL-Werten
arbeiten], Seite 150.
Was ist, wenn Sie wissen wollen, welche Tiere n¨achsten Monat Geburtstag haben? F¨ur diese
Art von Berechnung sind Jahre und Tage irrelevant. Sie wollen lediglich den Monatsanteil
der geburtstag-Spalte extrahieren. MySQL bietet etliche Funktionen f¨ur die Extraktion
von Datumsanteilen, wie YEAR(), MONTH() und DAYOFMONTH(). MONTH() ist hier die richtige
Funktion. Um festzustellen, wie sie funktioniert, geben Sie eine Anfrage ein, die sowohl die
Werte von geburtstag als auch die von MONTH(geburtstag) ausgibt:
mysql> SELECT name, geburtstag, MONTH(geburtstag) FROM pet;
+----------+------------+-------------------+
| name | geburtstag | MONTH(geburtstag) |
+----------+------------+-------------------+
| Fluffy | 1993-02-04 | 2 |
| Claws | 1994-03-17 | 3 |
| Buffy | 1989-05-13 | 5 |
| Fang | 1990-08-27 | 8 |
| Bowser | 1989-08-31 | 8 |
| Chirpy | 1998-09-11 | 9 |
| Whistler | 1997-12-09 | 12 |
| Slim | 1996-04-29 | 4 |
| Puffball | 1999-03-30 | 3 |
+----------+------------+-------------------+
Tiere mit Geburtstagen im kommenden Monat zu finden ist ebenfalls leicht. Nehmen wir
an, der aktuelle Monat ist April. Dann ist der Monatswert 4 und Sie suchen nach Tieren,
die im Mai (Monat 5) geboren sind, wie folgt:
mysql> SELECT name, geburtstag FROM pet WHERE MONTH(geburtstag) = 5;
+-------+------------+
| name | geburtstag |
+-------+------------+
| Buffy | 1989-05-13 |
+-------+------------+
Kommentare zu diesen Handbüchern