Abaixo estão 4 funções que permitem retornar o ano de uma data no MariaDB. Três funções retornam apenas o ano e uma retorna o ano e a semana.
O YEAR()
Função
O
YEAR()
função retorna o ano para uma determinada data. O resultado está no intervalo 1000
para 9999
, ou 0
para datas com ano zero (como 0000-00-00
). Exemplo:
SELECT YEAR('2023-07-25');
Resultado:
+--------------------+ | YEAR('2023-07-25') | +--------------------+ | 2023 | +--------------------+
O EXTRACT()
Função
O
EXTRACT
()
A função permite extrair uma unidade especificada da data. Portanto, você pode usá-lo para extrair o ano (assim como outras unidades) da data. Exemplo:
SELECT EXTRACT(YEAR FROM '2023-07-25');
Resultado:
+---------------------------------+ | EXTRACT(YEAR FROM '2023-07-25') | +---------------------------------+ | 2023 | +---------------------------------+
O DATE_FORMAT()
Função
O
DATE_FORMAT()
A função permite que você formate uma data com base em uma string de formato. A string de formato especifica como a data deve ser formatada. Portanto, você pode usar esta função para retornar o ano (assim como qualquer outra unidade) a partir da data. Existem diferentes especificadores de formato para retornar o ano em diferentes formatos. Por exemplo, um ano de quatro dígitos, ano de dois dígitos, etc.
Aqui está um exemplo que retorna o ano de várias formas:
SELECT
DATE_FORMAT('2023-01-01', '%X') AS "%X",
DATE_FORMAT('2023-01-01', '%x') AS "%x",
DATE_FORMAT('2023-01-01', '%Y') AS "%Y",
DATE_FORMAT('2023-01-01', '%y') AS "%y";
Resultado:
+------+------+------+------+ | %X | %x | %Y | %y | +------+------+------+------+ | 2023 | 2022 | 2023 | 23 | +------+------+------+------+
Observe que
%x
retornaram um número de ano diferente dos outros. Aqui está uma descrição de cada um desses especificadores de formato, que explica por que
%x
retornou um resultado diferente:Especificador de formato | Descrição |
---|---|
%X | Ano com 4 dígitos quando o primeiro dia da semana é domingo. Usado com %V . |
%x | Ano com 4 dígitos quando o primeiro dia da semana é segunda-feira. Usado com %v . |
%Y | Ano com 4 dígitos. |
%y | Ano com 2 dígitos. |
E aqui está uma descrição de
%V
e %v
conforme indicado na tabela acima:Especificador de formato | Descrição |
---|---|
%V | Número da semana (01-53), quando o primeiro dia da semana é domingo. Usado com %X . |
%v | Número da semana (01-53), quando o primeiro dia da semana é segunda-feira. Usado com %x . |
Assim, poderíamos adicionar esses especificadores de formato ao exemplo acima e obter o seguinte:
SELECT
DATE_FORMAT('2023-01-01', '%X, %V') AS "%X, %V",
DATE_FORMAT('2023-01-01', '%x, %v') AS "%x, %v";
Resultado:
+----------+----------+ | %X, %V | %x, %v | +----------+----------+ | 2023, 01 | 2022, 52 | +----------+----------+
Observe que
%x
nem sempre retornará um ano diferente – depende da data real que está sendo usada. Às vezes é %X
que retorna um ano diferente dos demais. Vamos adiantar a data um ano:
SELECT
DATE_FORMAT('2024-01-01', '%X') AS "%X",
DATE_FORMAT('2024-01-01', '%x') AS "%x",
DATE_FORMAT('2024-01-01', '%Y') AS "%Y",
DATE_FORMAT('2024-01-01', '%y') AS "%y";
Resultado:
+------+------+------+------+ | %X | %x | %Y | %y | +------+------+------+------+ | 2023 | 2024 | 2024 | 24 | +------+------+------+------+
Desta vez é
%X
esse é o estranho. Conforme explicado na tabela acima, depende se o primeiro dia da semana é domingo ou segunda-feira. Obviamente, se avançarmos no ano, todos os especificadores de formato retornarão o mesmo ano:
SELECT
DATE_FORMAT('2024-12-12', '%X') AS "%X",
DATE_FORMAT('2024-12-12', '%x') AS "%x",
DATE_FORMAT('2024-12-12', '%Y') AS "%Y",
DATE_FORMAT('2024-12-12', '%y') AS "%y";
Resultado:
+------+------+------+------+ | %X | %x | %Y | %y | +------+------+------+------+ | 2024 | 2024 | 2024 | 24 | +------+------+------+------+
Consulte Strings de formato MariaDB para obter uma lista completa de strings/especificadores de formato.
A YEARWEEK()
Função
O
YEARWEEK()
A função retorna o ano e a semana de uma determinada data. Exemplo:
SELECT YEARWEEK('2023-01-01');
Resultado:
+------------------------+ | YEARWEEK('2023-01-01') | +------------------------+ | 202301 | +------------------------+
O ano no resultado pode ser diferente do ano no argumento de data para a primeira e a última semana do ano.
Aqui está o que acontece se avançarmos um ano:
SELECT YEARWEEK('2024-01-01');
Resultado:
+------------------------+ | YEARWEEK('2024-01-01') | +------------------------+ | 202353 | +------------------------+
O
YEARWEEK()
A função aceita um segundo argumento opcional para especificar o modo. O resultado real que você obtém dessa função dependerá do modo que está sendo usado. Se o argumento mode for omitido, o valor do default_week_format
variável de sistema é usada. Veja como
YEARWEEK()
Funciona no MariaDB para saber mais sobre os modos e exemplos de cada um.