MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como QUARTER() funciona no MariaDB


No MariaDB, QUARTER() é uma função de data e hora integrada que retorna o trimestre de uma determinada expressão de data.

Ele aceita um argumento, que é a data da qual você deseja extrair o trimestre.

Ele retorna o trimestre como um número no intervalo 1 para 4 . Para datas com zero meses (por exemplo, 0000-00-00 ou 2025-00-00 ), o resultado é 0 .

Sintaxe


A sintaxe fica assim:
QUARTER(date) 

Onde date é a expressão de data da qual obter o trimestre.

Exemplo


Aqui está um exemplo:
SELECT QUARTER('2030-08-01'); 

Resultado:
+-----------------------+| QUARTER('2030-08-01') |+-----------------------+| 3 |+-----------------------+

Valores de data e hora


Também funciona com valores de data e hora:
SELECT QUARTER('2030-08-01 10:30:45'); 

Resultado:
+--------------------------------+| QUARTER('2030-08-01 10:30:45') |+--------------------------------+ | 3 |+--------------------------------+

Zero Meses


Datas com zero meses resultam em 0 .

Exemplo:
SELECT QUARTER('2030-00-00'); 

Resultado:
+-----------------------+| QUARTER('2030-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 QUARTER(20301125); 

Resultado:
+-------------------+| QUARTER(20301125) |+-------------------+| 4 |+-------------------+

Ou mesmo o seguinte (que usa um ano de dois dígitos):
SELECT QUARTER(301125); 

Resultado:
+-----------------+| QUARTER(301125) |+-----------------+| 4 |+-----------------+

Mas deve fazer sentido como uma data. Veja o que acontece se eu aumentar a parte do dia para um dia inválido:
SELECT QUARTER(20301135); 

Resultado:
+-------------------+| QUARTER(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 
    QUARTER('2030/06/25'),
    QUARTER('2030,06,25'),
    QUARTER('2030:06:25'),
    QUARTER('2030;06!25'); 

Resultado (usando saída vertical):
QUARTER('2030/06/25'):2QUARTER('2030,06,25'):2QUARTER('2030:06:25'):2QUARTER('2030;06!25'):2 

Data atual


Podemos passar NOW() como argumento datetime para usar a data atual:
SELECT 
    NOW(),
    QUARTER(NOW()); 

Resultado:
+---------------------+----------------+| AGORA() | QUARTER(AGORA()) |+--------------------------------+----------------+| 2021-05-18 09:23:27 | 2 |+---------------------+----------------+

Argumentos inválidos


Quando passado um argumento inválido, QUARTER() retorna null :
SELECT QUARTER('2030-65-78'); 

Resultado:
+-----------------------+| QUARTER('2030-65-78') |+-----------------------+| NULL |+-----------------------+1 linha no conjunto, 1 aviso (0,000 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 QUARTER() com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:
SELECT QUARTER(); 

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 QUARTER('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