Problema:
Você deseja obter o ano e o mês de uma determinada data em um banco de dados MySQL.
Exemplo:
Nosso banco de dados tem uma tabela chamada
dates
com dados nas colunas id
e date
. id | data |
---|---|
1 | 21-04-2008 |
2 | 14-12-1987 |
Vamos extrair o
year
e o month
a partir da data. Solução 1:
SELECT EXTRACT(YEAR FROM date) AS year, EXTRACT(MONTH FROM date) AS month FROM dates;
O resultado é:
ano | mês |
---|---|
2008 | 4 |
1987 | 12 |
Discussão:
Para obter as colunas de ano e mês, use o
EXTRACT(part FROM date)
função. Nesta solução, o argumento part é substituído por YEAR
e MONTH
para obter o year
e o month
separadamente, cada um em sua própria coluna. Você pode aprender mais sobre
EXTRACT()
na documentação oficial do MySQL. Solução 2:
SELECT EXTRACT(YEAR_MONTH FROM date) AS year_and_month FROM dates;
O resultado é:
ano_e_mês |
---|
200804 |
198712 |
Discussão:
Esta solução funciona exatamente como a anterior, mas
YEAR_MONTH
é usado para obter o ano e o mês juntos em uma coluna em vez de obtê-los separadamente. Observe que os valores do ano e do mês não são separados um do outro. Solução 3:
SELECT YEAR(date) AS year, MONTH(date) AS month FROM dates;
O resultado é:
ano | mês |
---|---|
2008 | 4 |
1987 | 12 |
Discussão:
Desta vez, o
YEAR()
e o MONTH()
funções são usadas para criar duas colunas. YEAR()
retorna o ano e MONTH()
retorna o mês como um número. Solução 4:
SELECT YEAR(date) AS year, MONTHNAME(date) AS month FROM dates;
O resultado é:
ano | mês |
---|---|
2008 | abril |
1987 | Dezembro |
Discussão:
Para obter o nome do mês, use o
MONTHNAME()
função. O resultado exibe o nome do mês em vez do número do mês. Solução 5:
SELECT DATE_FORMAT(date, '%Y-%m') AS year_and_month FROM dates;
O resultado é:
ano_e_mês |
---|
2008-04 |
1987-12 |
Discussão:
Use o
DATE_FORMAT()
função para exibir date
valores em um formato específico. Leva a date
como o primeiro argumento e uma string descrevendo o formato de data desejado como o segundo argumento. No nosso caso, a string '%Y-%m
', %Y
retorna o ano, ' -
’ é usado como separador e %m
devolve o mês numericamente (pode ser substituído por %M
para obter o nome do mês). Você pode aprender mais sobre
DATE_FORMAT()
na documentação oficial do MySQL.