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.
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

Course

Introduction to SQL

2 hr
646.4K
Learn how to create and query relational databases using SQL in just two hours.
See DetailsRight Arrow
Start Course
Ver másRight Arrow
Relacionado

blog

20 preguntas principales de la entrevista sobre SQL Joins

Prepara tu entrevista SQL con esta lista de las preguntas más comunes sobre SQL Joins
Javier Canales Luna's photo

Javier Canales Luna

15 min

blog

Las 8 principales competencias de los analistas de negocio para 2024

Explore las principales competencias técnicas y sociales de los analistas de negocio necesarias para tener éxito y la mejor forma de mostrarlas en su cartera y en su currículum.
Joleen Bothma's photo

Joleen Bothma

11 min

blog

Las 10 principales conferencias sobre análisis de datos para 2024

Descubra las conferencias y eventos sobre analítica más populares programados para 2024.
Javier Canales Luna's photo

Javier Canales Luna

7 min

blog

Las 31 mejores preguntas y respuestas para entrevistas a analistas de negocio de todos los niveles

Explore las preguntas habituales en las entrevistas a analistas de negocio y sus respuestas para todos los niveles de experiencia.
Austin Chia's photo

Austin Chia

18 min

blog

5 formas únicas de utilizar la IA en el análisis de datos

El análisis de datos con IA está en auge entre los profesionales de los datos. Conozca en esta guía cinco formas únicas de aprovechar el poder de la IA para el análisis de datos.
Austin Chia's photo

Austin Chia

blog

Las 6 mejores certificaciones de analista de negocio: Su camino hacia la certificación

Explore las principales certificaciones de analista de negocio para mejorar su carrera. Infórmese sobre las ventajas, consejos de preparación y cómo puede ayudarle DataCamp.
Matt Crabtree's photo

Matt Crabtree

15 min

See MoreSee More