No MySQL, você pode usar o
DATEDIFF()
função para encontrar a diferença entre duas datas. A maneira como funciona é que você fornece dois argumentos (um para cada data) e DATEDIFF()
retornará o número de dias entre as duas datas. Exemplos abaixo.
Sintaxe
Primeiro, aqui está a sintaxe:
DATEDIFF(expr1,expr2)
Onde
expr1
é a primeira data e expr2
é a segunda data. Exemplo 1 – Uso básico
Aqui está um exemplo para demonstrar.
SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
Resultado:
+--------+ | Result | +--------+ | 29 | +--------+
Neste exemplo, a primeira data é posterior à segunda data. Neste caso, obtemos um valor de retorno positivo.
Exemplo 2 – Comparação com uma data anterior
A primeira data não precisa ser posterior à segunda data. Você pode usar uma data anterior para o primeiro argumento e ele retornará um valor negativo. Se trocarmos esses dois argumentos, obtemos o seguinte:
SELECT DATEDIFF('2020-10-01', '2020-10-30') AS 'Result';
Resultado:
+--------+ | Result | +--------+ | -29 | +--------+
Exemplo 3 – Valores de data e hora
Quando usado com datetime valores, apenas a parte da data é usada para comparar as datas. Exemplo:
SELECT DATEDIFF('2020-10-30 23:59:59', '2020-10-01') AS 'Result 1', DATEDIFF('2020-10-01 23:59:59', '2020-10-30') AS 'Result 2';
Resultado:
+----------+----------+ | Result 1 | Result 2 | +----------+----------+ | 29 | -29 | +----------+----------+
Exemplo 4 – Consulta ao banco de dados
Aqui está um exemplo de uso de
DATEDIFF()
em uma consulta de banco de dados. Neste exemplo, comparo o payment_date
coluna com a data de hoje (usando o CURDATE()
função para retornar a data de hoje):USE sakila; SELECT DATE(payment_date) AS 'Date/Time', CURDATE(), DATEDIFF(payment_date, CURDATE()) AS 'Date' FROM payment WHERE payment_id = 1;
Resultado:
+------------+------------+-------+ | Date/Time | CURDATE() | Date | +------------+------------+-------+ | 2005-05-25 | 2018-06-25 | -4779 | +------------+------------+-------+