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:
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
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.ordersCon la tecnología de
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 dateFROM sales.ordersCon la tecnología de
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
Aprende a utilizar DECODE() en Oracle para la lógica condicional en la transformación de datos. Compara DECODE() con la sentencia CASE WHEN en cuanto a rendimiento y comportamiento.
Aprende a utilizar los disparadores SQL para automatizar tareas, mantener la integridad de los datos y mejorar el rendimiento de la base de datos. Prueba ejemplos prácticos como los comandos CREATE, ALTER y DROP en MySQL y Oracle.
¿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 sintaxisParámetro
¿Qué es?
datepartUn parámetro obligatorio. Es la unidad en la que
DATEDIFF()informa de la diferencia entrestartdateyenddate. Consulta el apartado siguiente para conocer los distintos tipos de valores que puede contener.startdateUn parámetro obligatorio que indica un valor datetime que denota la fecha de inicio.
enddateUn parámetro obligatorio indica un valor datetime que denota la fecha final.
dateparty su sintaxisEl parámetro
datepartpuede tomar muchos valores, entre ellos los siguientesyear,y,yy, oyyyyquarter,qq,qmonth,mm,mdayofyear,day,dd,dweek,wk,wwhour,hhminute,mi,nsecond,ss,smillisecond,msmicrosecond,mcsnanosecond,nsTen en cuenta que
datepartno debe ir entre comillas. Por ejemplo, la sintaxis siguiente es correcta:Lo siguiente es incorrecto.
DATEDIFF(), ejemplosAl trabajar con
DATEDIFF(), los resultados pueden ser valores positivos o negativos. Sienddatees posterior astartdate, entoncesDATEDIFF()devuelve un valor positivo. Sienddatees anterior astartdate,DATEDIFF()devuelve un valor negativo.Ejemplo 1: encuentra la diferencia entre dos fechas
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
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().order_idorder_dateshipped_dateorder_to_ship_days1
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.orderscomo en el Ejemplo 3, podemos utilizarDATEDIFF()para hallar el intervalo entre la fecha de hoy y la fecha en que se realiza un pedido.order_idorder_dateshipped_dateorder_to_ship_days1
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ónDATEDIFF_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