Guía de la base de datos

En MySQL, puede utilizar la función DATEDIFF() para encontrar la diferencia entre dos fechas. La forma en que funciona es, usted proporciona dos argumentos (uno para cada fecha), y DATEDIFF() devolverá el número de días entre las dos fechas.

Ejemplos abajo.

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. En este caso obtenemos un valor de retorno positivo.

Ejemplo 2 – Comparación con una fecha anterior

La primera fecha no tiene por qué ser posterior a la segunda. Se puede utilizar 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

Cuando se utiliza con valores de fecha, sólo se usa la parte de la fecha 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 de uso de DATEDIFF() en una consulta de base de datos. En este ejemplo, comparo la columna payment_date con la fecha de hoy (utilizando la función CURDATE() para devolver la fecha de hoy):

USE sakila;SELECT DATE(payment_date) AS 'Date/Time', CURDATE(), DATEDIFF(payment_date, CURDATE()) AS 'Date'FROM paymentWHERE payment_id = 1;

Resultado:

+------------+------------+-------+| Date/Time | CURDATE() | Date |+------------+------------+-------+| 2005-05-25 | 2018-06-25 | -4779 |+------------+------------+-------+

Deja una respuesta

Tu dirección de correo electrónico no será publicada.