Saltar al contenido principal
InicioTutorialesSQL

FUNCIÓN SQL DATEDIFF()

DATEDIFF() es una de las funciones de manipulación de datos de fecha más utilizadas en SQL. Conviértete en un experto leyendo este tutorial.
Actualizado abr 2024  · 3 min leer

¿Qué es la función DATEDIFF() ?

La función DATEDIFF() devuelve el intervalo entre dos marcas de tiempo o valores de fecha en una unidad especificada. 

DATEDIFF() y su sintaxis

DATEDIFF(datepart, startdate, enddate)

Parámetro

¿Qué es?

datepart

Un parámetro obligatorio. Es la unidad en la que DATEDIFF() informa de la diferencia entre startdate y enddate. Consulta el apartado siguiente para conocer los distintos tipos de valores que puede contener. 

startdate

Un parámetro obligatorio que indica un valor datetime que denota la fecha de inicio. 

enddate

Un parámetro obligatorio indica un valor datetime que denota la fecha final. 

datepart y su sintaxis 

El parámetro datepart puede tomar muchos valores, entre ellos los siguientes 

  • Año: year, y, yy, o yyyy
  • Trimestre: quarter, qq, q
  • Mes: month, mm, m
  • Día: dayofyear, day, dd, d
  • Semana: week, wk, ww
  • Hora: hour, hh
  • Minuto: minute, mi, n
  • Segundo: second, ss, s
  • Milisegundo: millisecond, ms
  • Microsegundo: microsecond, mcs
  • Nanosegundo: nanosecond, ns

 Ten en cuenta que datepart no debe ir entre comillas. Por ejemplo, la sintaxis siguiente es correcta:

DATEDIFF(year, ‘2022-01-01', ‘2022-01-02')

Lo siguiente es incorrecto.

DATEDIFF(‘year', ‘2022-01-01', ‘2022-01-02')

DATEDIFF() , ejemplos

Al trabajar con DATEDIFF(), los resultados pueden ser valores positivos o negativos. Si enddate es posterior a startdate, entonces DATEDIFF() devuelve un valor positivo. Si enddate es anterior a startdate, DATEDIFF() devuelve un valor negativo. 

Ejemplo 1: encuentra la diferencia entre dos fechas

SELECT DATEDIFF(timepart, ‘2022-12-31', ‘2024-06-01')

Consulta

Salida

SELECT DATEDIFF(year, ‘2022-12-31', ‘2024-06-01')

1

SELECT DATEDIFF(quarter, ‘2022-12-31', ‘2024-06-01')

2

SELECT DATEDIFF(month, ‘2022-12-31', ‘2024-06-01')

6

SELECT DATEDIFF(day, ‘2022-12-31', ‘2024-06-01')

153

SELECT DATEDIFF(week, ‘2022-12-31', ‘2024-06-01')

21

Ejemplo 2: encuentra la diferencia entre dos marcas de tiempo

SELECT DATEDIFF(datepart, '2023-12-31 00:00:00, '2023-12-31 00:59:59')

Consulta

Salida

SELECT DATEDIFF(hour,'2023-12-31 00:00:00', '2023-12-31 00:59:59')

0

SELECT DATEDIFF(minute,'2023-12-31 00:00:00','2023-12-31 00:59:59')

59

SELECT DATEDIFF(second,'2023-12-31 00:00:00','2023-12-31 00:59:59')

3599

SELECT DATEDIFF(millisecond,'2023-12-31 00:00:00','2023-12-31 00:59:59')

3599000

Ejemplo 3: encuentra la diferencia entre dos columnas de fecha

Considera la tabla sales.orders, que contiene estas columnas:

  • order_date (al realizar el pedido) 
  • shipped_date (cuando se envíe el pedido)

Para hacer un seguimiento del plazo de entrega, podemos utilizar la función DATEDIFF().

SELECT
    order_id,
    order_date,
    shipped_date,
    DATEDIFF(day, order_date, shipped_date) order_to_ship_days
FROM sales.orders

order_id

order_date

shipped_date

order_to_ship_days

1

2016-01-01T00:00:00.000Z

2016-01-03T00:00:00.000Z

2

2

2016-01-01T00:00:00.000Z

2016-01-03T00:00:00.000Z

2

3

2016-01-02T00:00:00.000Z

2016-01-03T00:00:00.000Z

1

Ejemplo 4 halla el intervalo entre la fecha de hoy y una columna

Utilizando la tabla sales.orders como en el Ejemplo 3, podemos utilizar DATEDIFF() para hallar el intervalo entre la fecha de hoy y la fecha en que se realiza un pedido.

SELECT
   order_id,
   order_date,
   GETDATE() AS todays_date,
   DATEDIFF(day, order_date, GETDATE()) AS order_to_today -- interval between order_date with today's date
FROM sales.orders

order_id

order_date

shipped_date

order_to_ship_days

1

2016-01-01T00:00:00.000Z

2022-10-09T02:47:00.403Z

2473

2

2016-01-01T00:00:00.000Z

2022-10-09T02:47:00.403Z

2473

3

2016-01-02T00:00:00.000Z

2022-10-09T02:47:00.403Z

2472

Notas adicionales

La función DATEDIFF() devuelve un error si el resultado está fuera de rango (es decir, el valor es mayor que +2.147.483.647 o menor que -2.147.483.647). En este caso, la función DATEDIFF_BIG() es adecuada. 

Requisitos técnicos

Funciona en SQL Server (a partir de 2008), Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse

Ver también

Más información sobre Python

Temas

Cursos populares de SQL

Certificación disponible

Course

Introducción a SQL

2 hr
591.9K
Aprende a crear y consultar bases de datos relacionales utilizando SQL en solo dos horas.
See DetailsRight Arrow
Start Course
Certificación disponible

Course

SQL intermedio

4 hr
189.3K
Acompañado en cada paso con consultas prácticas, este curso te enseña todo lo que necesitas saber para analizar datos utilizando tu propio código SQL ¡hoy mismo!
Ver másRight Arrow