No MariaDB,
DATEDIFF()
é uma função interna de data e hora que retorna a diferença, em dias, entre duas datas. Ele aceita dois argumentos, ambos são expressões de data ou data e hora. Em seguida, subtrai a segunda data da primeira.
Sintaxe
A sintaxe fica assim:
DATEDIFF(expr1,expr2)
Em seguida, ele retorna
expr1 - expr2
. Exemplo
Aqui está um exemplo:
SELECT DATEDIFF('2030-01-25', '2030-01-20');
Resultado:
+--------------------------------------+ | DATEDIFF('2030-01-25', '2030-01-20') | +--------------------------------------+ | 5 | +--------------------------------------+
Aqui está novamente, mas com as datas trocadas:
SELECT DATEDIFF('2030-01-20', '2030-01-25');
Resultado:
+--------------------------------------+ | DATEDIFF('2030-01-20', '2030-01-25') | +--------------------------------------+ | -5 | +--------------------------------------+
Valores de data e hora
Aqui está um exemplo que usa valores de data e hora:
SELECT DATEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59');
Resultado:
+--------------------------------------------------------+ | DATEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59') | +--------------------------------------------------------+ | 5 | +--------------------------------------------------------+
Aqui está outro exemplo:
SELECT DATEDIFF('2030-01-25 00:00:00', '2030-01-25 23:59:59');
Resultado:
+--------------------------------------------------------+ | DATEDIFF('2030-01-25 00:00:00', '2030-01-25 23:59:59') | +--------------------------------------------------------+ | 0 | +--------------------------------------------------------+
Neste caso, apesar de ter sido quase um dia inteiro, não foi bem, então o resultado é
0
. Data atual
Aqui, passamos
NOW()
como segundo argumento:SELECT
NOW(),
DATEDIFF('2030-01-20', NOW());
Resultado:
+---------------------+-------------------------------+ | NOW() | DATEDIFF('2030-01-20', NOW()) | +---------------------+-------------------------------+ | 2021-05-10 10:03:08 | 3177 | +---------------------+-------------------------------+
Neste caso, há 3.177 dias entre agora e a segunda data.
Argumentos inválidos
Ao passar qualquer argumento inválido,
DATEDIFF()
retorna null
:SELECT DATEDIFF('Homer', 'Simpson');
Resultado:
+------------------------------+ | DATEDIFF('Homer', 'Simpson') | +------------------------------+ | NULL | +------------------------------+
Argumento ausente
Chamando
DATEDIFF()
o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:SELECT DATEDIFF();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DATEDIFF'
E:
SELECT DATEDIFF('2030-05-21');
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DATEDIFF'