Como determinar quando um ano é bissexto no MySQL

Veja alguns meios eficazes de determinar se um ano é bissexto ou não no MySQL.
Sabemos que alguns cálculos envolvendo anos ou dias dos anos pode se tornar complicados em função de alguns anos terem um dia a mais.
Neste texto, vou mostrar como determinar se um ano é bissexto ou não.
O fato de que um mês pode ter um dia a mais em alguns anos, já pode servir de complicador para realizar algumas contas.
Para determinar se uma determinada data cai ou não em um ano bissexto você deva obter o componente de ano, com a função YEAR() e testar este resultado.
Há um regra geral de que os anos bissextos são todos divisíveis por 4. Isto pode ser testado com o uso do operador de módulo, assim:

SELECT YEAR(DataNascimentoCliente) AS "Anos", YEAR(DataNascimentoCliente)% 4=0 AS "Anos normais/bissextos" FROM CadastroClientes LIMIT 10;
+------+------------------------+
| Anos | Anos normais/bissextos |
+------+------------------------+
| 1984 |                      1 |
| 1984 |                      1 |
| 1981 |                      0 |
| 1983 |                      0 |
| 1969 |                      0 |
| 1979 |                      0 |
| 1976 |                      1 |
| 1975 |                      0 |
| 1983 |                      0 |
| 1978 |                      0 |
+------+------------------------+

Os anos ‘1’ são bissextos.
Esta abordagem não é perfeita, contudo. O ano 1900 é também divisível por 4 e… não é bissexto.
Portanto, para que um ano seja qualificado como bissexto, precisa satisfazer a estas 2 condições:

  • o ano tem que ser divisível por 4
  • não pode ser divisível por 100, a menos que seja também divisível por 400

Vamos a uma query que faça estas filtragens:

SELECT YEAR(DataNascimentoCliente) AS ANO, (YEAR(DataNascimentoCliente) %4 = 0) AND (YEAR(DataNascimentoCliente) % 100 != 0) OR (YEAR(DataNascimentoCliente) % 400 = 0) AS "Teste completo" FROM CadastroClientes LIMIT 10;
+------+----------------+
| ANO  | Teste completo |
+------+----------------+
| 1984 |              1 |
| 1984 |              1 |
| 1981 |              0 |
| 1983 |              0 |
| 1969 |              0 |
| 1979 |              0 |
| 1976 |              1 |
| 1975 |              0 |
| 1983 |              0 |
| 1978 |              0 |
+------+----------------+

Pronto. Este método é mais seguro que o anterior — mas pode ser desnecessário se o seu banco de dados não inclui a possibilidade de lidar com o ano 1900…

Publicado por

Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como “Rick and Morty” e “BoJack Horseman”.
Me siga no Twitter e vamos trocar ideias!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *