Página 21
mysql> SELECT name, birth, death, (TO_DAYS(death)-TO_DAYS(birth))/365 AS age
-> FROM pet WHERE death IS NOT NULL ORDER BY age;
+--------+------------+------------+------+
| name | birth | death | age |
+--------+------------+------------+------+
| Bowser | 1989-08-31 | 1995-07-29 | 5.91 |
+--------+------------+------------+------+
A pergunta usa morte IS NOT NULL em vez de morte != NULL porque NULL é um valor especial. Se você deseja saber que animais têm aniversários no próximo mês? Para este tipo de cálculo, ano e dia são irrelevantes, você simplesmente deseja extrair o mês da coluna de nascimento. MySQL fornece várias funções do extração de partes da data, tal como YEAR(), MONTH() and DAYOFMONTH(). MONTH() é a função apropriada aqui. Para ver como isto trabalha, faz uma pergunta simples que exibe o valor de ambos data de nascimento e mês(nascimento):
mysql> SELECT name, birth, MONTH(birth) FROM pet;
+----------+------------+--------------+
| name | birth | MONTH(birth) |
+----------+------------+--------------+
| 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 |
+----------+------------+--------------+
Descobrindo animais com aniversários no próximo mês é fácil, também. Suponha o mês corrente é abril. Então o valor de mês é 4 e você espera animais nascidos no mês de maio (mês 5):
mysql> SELECT name, birth FROM pet WHERE MONTH(birth) = 5;
+-------+------------+
| name | birth |
+-------+------------+
| Buffy | 1989-05-13 |
+-------+------------+
|