En MySQL, puede usar DATEDIFF()
función para encontrar la diferencia entre dos fechas. La forma en que funciona es que proporciona dos argumentos (uno para cada fecha) y DATEDIFF()
devolverá el número de días entre las dos fechas.
Ejemplos a continuación.
Sintaxis
Primero, aquí está la sintaxis:
DATEDIFF(expr1,expr2)
Donde expr1
es la primera fecha, y expr2
es la segunda fecha.
Ejemplo 1:uso básico
Aquí hay un ejemplo para demostrarlo.
SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
Resultado:
+--------+ | Result | +--------+ | 29 | +--------+
En este ejemplo, la primera fecha es posterior a la segunda fecha. En este caso obtenemos un valor de retorno positivo.
Ejemplo 2:comparación con una fecha anterior
La primera fecha no tiene que ser una fecha posterior a la segunda fecha. Puede usar una fecha anterior para el primer argumento y devolverá un valor negativo. Si intercambiamos esos dos argumentos, obtenemos lo siguiente:
SELECT DATEDIFF('2020-10-01', '2020-10-30') AS 'Result';
Resultado:
+--------+ | Result | +--------+ | -29 | +--------+
Ejemplo 3:valores de fecha y hora
Cuando se usa con datetime valores, sólo la parte de la fecha se utiliza para comparar las fechas. Ejemplo:
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 | +----------+----------+
Ejemplo 4:consulta de base de datos
Aquí hay un ejemplo del uso de DATEDIFF()
en una consulta de base de datos. En este ejemplo, comparo el payment_date
columna con la fecha de hoy (usando el CURDATE()
función para devolver la fecha de hoy):
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 | +------------+------------+-------+