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.