No MariaDB,
YEAR() é uma função interna de data e hora que retorna o ano de uma determinada expressão de data. Ele aceita um argumento, que é a data da qual você deseja extrair o ano.
Ele retorna o ano como um número no intervalo
1000 para 9999 . Para datas zero (por exemplo, 0000-00-00 ), o resultado é 0 . Sintaxe
A sintaxe fica assim:
YEAR(date) Onde
date é a expressão de data da qual obter o ano. Exemplo
Aqui está um exemplo:
SELECT YEAR('2030-08-01'); Resultado:
+--------------------+| ANO('2030-08-01') |+--------------------+| 2030 |+--------------------+ Valores de data e hora
Também funciona com valores de data e hora:
SELECT YEAR('2030-08-01 10:30:45'); Resultado:
+-----------------------------+| ANO('2030-08-01 10:30:45') |+-----------------------------+| 2030 |+-----------------------------+ Zero Datas
Zero datas resultam em
0 . Exemplo:
SELECT YEAR('0000-00-00'); Resultado:
+--------------------+| ANO('0000-00-00') |+--------------------+| 0 |+--------------------+ Datas numéricas
Também é possível passar datas como um número, desde que faça sentido como uma data.
Exemplo
SELECT YEAR(20301125); Resultado:
+----------------+| ANO(20301125) |+----------------+| 2030 |+----------------+
Ou mesmo o seguinte (que usa um ano de dois dígitos):
SELECT YEAR(301125); Resultado:
+--------------+| ANO(301125) |+--------------+| 2030 |+--------------+
Mas deve fazer sentido como uma data. Veja o que acontece se eu aumentar a parte do dia para um dia inválido:
SELECT YEAR(20301135); Resultado:
+----------------+| ANO(20301135) |+----------------+| NULL |+----------------+1 linha no conjunto, 1 aviso (0,000 seg)
Podemos verificar o aviso assim:
SHOW WARNINGS; Resultado:
+---------+------+----------------------------- ---------+| Nível | Código | Mensagem |+---------+------+------------------- --------+| Aviso | 1292 | Valor de data e hora incorreto:'20301135' |+---------+------+------------------------ --------------+
Outros delimitadores
Você pode usar outros delimitadores para a data. O MariaDB é bastante tolerante quando se trata de delimitadores de datas. Aqui estão alguns exemplos válidos:
SELECT
YEAR('2030/06/25'),
YEAR('2030,06,25'),
YEAR('2030:06:25'),
YEAR('2030;06!25'); Resultado (usando saída vertical):
ANO('2030/06/25'):2030YEAR('2030,06,25'):2030YEAR('2030:06:25'):2030YEAR('2030;06!25'):2030 Data atual
Podemos passar NOW() como argumento datetime para usar a data atual:
SELECT
NOW(),
YEAR(NOW());
Resultado:
+----------+-------------+| AGORA() | ANO(AGORA()) |+---------------------+-------------+| 2021-05-18 08:55:02 | 2021 |+---------------------+-------------+
Argumentos inválidos
Quando passado um argumento inválido, YEAR() retorna null :
SELECT YEAR('2030-65-78');
Resultado:
+--------------------+| ANO('2030-65-78') |+--------------------+| NULL |+--------------------+1 linha no conjunto, 1 aviso (0,001 seg)
Confira o aviso:
SHOW WARNINGS;
Resultado:
+---------+------+----------------------------- -----------+| Nível | Código | Mensagem |+---------+------+------------------- ----------+| Aviso | 1292 | Valor de data e hora incorreto:'2030-65-78' |+---------+------+-------------------- --------------------+
Argumento ausente
Chamando YEAR() com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:
SELECT YEAR();
Resultado:
ERRO 1064 (42000):Você tem um erro na sintaxe SQL; verifique o manual que corresponde à versão do seu servidor MariaDB para a sintaxe correta para usar perto de ')' na linha 1
E outro exemplo:
SELECT YEAR('2030-12-10', '2031-12-10');
Resultado:
ERRO 1064 (42000):Você tem um erro na sintaxe SQL; verifique o manual que corresponde à sua versão do servidor MariaDB para a sintaxe correta para usar perto de ' '2031-12-10')' na linha 1