Resumen: en este tutorial, aprenderá a utilizar la función de SQL Server DATEDIFF()
para calcular el número de años, meses, semanas, días,etc., entre dos fechas.
Resumen de DATEDIFF() de SQL Server
Para calcular la diferencia entre dos fechas en años, meses, semanas, etc., se utiliza la función DATEDIFF()
:
Code language: SQL (Structured Query Language) (sql)DATEDIFF( date_part , start_date , end_date)
La función DATEDIFF()
acepta tres argumentos: date_part
start_date
, y end_date
.
-
date_part
es la parte de la fecha por ejemplo, un año, un trimestre, un mes, una semana que quieres comparar entre elstart_date
y elend_date
. Consulte las partes de fecha válidas en la tabla siguiente. -
start_date
yend_date
son las fechas a comparar. Deben resolverse en valores del tipoDATE
DATETIME
DATETIMEOFFSET
DATETIME2
SMALLATETIME
, oTIME
.
La siguiente tabla enumera los valores válidos de date_part
:
fecha_parte | abreviaturas |
---|---|
año | año, aaaa |
trimestre | qq, q |
mes | mm, m |
día del año | dy, y |
día | dd, d | semana | semana, ww | hora | hh | minuto | mi, n |
segundo | ss, s |
milisegundo | ms |
microsegundo | mcs |
nanosegundo | ns |
La función DATEDIFF()
devuelve un valor de entero que indica la diferencia entre el start_date
y el end_date
, con la unidad especificada por date_part
.
La función DATEDIFF()
devuelve un error si el resultado está fuera del rango de los enteros (-2.147.483.648 a +2.147.483.647). En este caso, debes utilizar la función DATEDIFF_BIG()
en su lugar.
Ejemplos de la función DATEDIFF() de SQL Server
Vamos a poner algunos ejemplos de uso de la función DATEDIFF()
para entenderla mejor.
A) Uso de la función DATEDIFF() para comparar las diferencias entre dos valores de fecha
Este ejemplo utiliza la función DATEDIFF()
para comparar la diferencia entre dos fechas en varias partes de fecha:
Code language: SQL (Structured Query Language) (sql)DECLARE @start_dt DATETIME2= '2019-12-31 23:59:59.9999999', @end_dt DATETIME2= '2020-01-01 00:00:00.0000000';SELECT DATEDIFF(year, @start_dt, @end_dt) diff_in_year, DATEDIFF(quarter, @start_dt, @end_dt) diff_in_quarter, DATEDIFF(month, @start_dt, @end_dt) diff_in_month, DATEDIFF(dayofyear, @start_dt, @end_dt) diff_in_dayofyear, DATEDIFF(day, @start_dt, @end_dt) diff_in_day, DATEDIFF(week, @start_dt, @end_dt) diff_in_week, DATEDIFF(hour, @start_dt, @end_dt) diff_in_hour, DATEDIFF(minute, @start_dt, @end_dt) diff_in_minute, DATEDIFF(second, @start_dt, @end_dt) diff_in_second, DATEDIFF(millisecond, @start_dt, @end_dt) diff_in_millisecond;
Aquí está la salida:
B) Uso de la función DATEDIFF() con la tabla columna ejemplo
El siguiente ejemplo utiliza la función DATEDIFF()
para comparar la fecha de entrega solicitada con la fecha de envío en días y devolver si el pedido está atiempo o se retrasa:
Code language: SQL (Structured Query Language) (sql)SELECT order_id, required_date, shipped_date, CASE WHEN DATEDIFF(day, required_date, shipped_date) < 0 THEN 'Late' ELSE 'OnTime' END shipmentFROM sales.ordersWHERE shipped_date IS NOT NULLORDER BY required_date;
Aquí está la salida:
En este tutorial, ha aprendido a utilizar la función de SQL Server DATEDIFF()
para calcular la diferencia entre dos valores de fecha.