424 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
mysql> SELECT DATE_ADD("1998-01-01 00:00:00",
INTERVAL "-1 10" DAY_HOUR);
-> 1997-12-30 14:00:00
mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);
-> 1997-12-02
Wenn Sie einen Intervallwert angeben, der zu kurz ist (nicht alle Intervall-
Anteile beinhaltet, die vom typ-Schl¨usselwort erwartet werden), nimmt MySQL
an, dass Sie den ¨außersten linken Teil des Intervallwerts ausgelassen haben.
Wenn Sie beispielsweise einen typ DAY_SECOND angeben, wird vom Wert von
ausdruck erwartet, dass dieser Tages-, Stunden-, Minuten- und Sekunden-
Anteile enth¨alt. Wenn Sie einen Wert wie "1:10" angeben, nimmt MySQL an,
dass die Tages- und Stunden-Anteile fehlen und der Wert Minuten und Sekun-
den darstellt. Mit anderen Worten wird "1:10" DAY_SECOND so interpretiert,
dass es ¨aquivalent zu "1:10" MINUTE_SECOND ist. Das ist analog zur Weise,
wie MySQL TIME-Werte interpretiert, die eher vergangene Zeit als Tageszeit
darstellen.
Beachten Sie, dass ein Datumswert automatisch in einen DATETIME-Wert
umgewandelt wird, wenn Sie einen DATE-Wert zu etwas hinzuz¨ahlen oder von
etwas abziehen, das einen Zeit-Anteil hat:
mysql> select date_add("1999-01-01", interval 1 day);
-> 1999-01-02
mysql> select date_add("1999-01-01", interval 1 hour);
-> 1999-01-01 01:00:00
Wenn Sie wirklich falsche Datumsangaben benutzen, ist das Ergebnis NULL.
Wenn Sie MONTH, YEAR_MONTH oder YEAR hinzuz¨ahlen und das Datumsergebnis
einen Tag hat, der gr¨oßer ist als der h¨ochste Tag f¨ur den neuen Monat, wird
der Tag auf den h¨ochsten Tag des neuen Monats angepasst:
mysql> select DATE_ADD(’1998-01-30’, Interval 1 month);
-> 1998-02-28
Beachten Sie, dass das Wort INTERVAL und das typ-Schl¨usselwort in den vorste-
henden Beispielen nicht von der verwendeten Groß-/Kleinschreibung abh¨angen.
EXTRACT(typ FROM datum)
Die EXTRACT()-Funktion benutzt dieselbe Art von Intervalltyp-Spezifikatoren
wie DATE_ADD() oder DATE_SUB(), extrahiert aber Anteile aus dem Datum,
statt Datumsberechnungen durchzuf¨uhren:
mysql> SELECT EXTRACT(YEAR FROM "1999-07-02");
-> 1999
mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03");
-> 199907
mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03");
-> 20102
TO_DAYS(datum)
Gibt f¨ur ein Datum datum eine Tagesanzahl zur¨uck (die Anzahl von Tagen seit
dem Jahr 0):
Comentarios a estos manuales