Diferencias de fecha

La función DATEDIFF calcula la diferencia entre dos valores de fecha y devuelve un entero (con cualquier componente de fracción truncado) en las unidades de fecha/hora especificadas. La forma general de la expresión es

DATEDIFF(datetime2, datetime1, “unit”).

donde datetime2 y datetime1 son variables de formato de fecha u hora (o valores numéricos que representan valores válidos de fecha/hora), y "unidad" es uno de los siguientes valores literales de cadena, entre comillas:

  • Años
  • Trimestres
  • Meses
  • Semanas
  • días
  • Horas
  • Minutos
  • Segundos

Ejemplo

DATA LIST FREE /date1 date2 (2ADATE10).
BEGIN DATA
1/1/2004 2/1/2005
1/1/2004 2/15/2005
1/30/2004 1/29/2005
END DATA.
COMPUTE years=DATEDIFF(date2, date1, "years").
  • El resultado será la parte entera del número de años entre las dos fechas, con cualquier componente fraccional truncado.
  • Un "año" se define como el mismo mes y día, un año antes o después del segundo argumento de fecha.
  • Para los dos primeros casos, el resultado es 1, ya que en ambos casos el número de años es mayor o igual que 1 y menor que 2.
  • Para el tercer caso, el resultado es 0, ya que la diferencia es un día menos de un año en base a la definición de año.

Ejemplo

DATA LIST FREE /date1 date2 (2ADATE10).
BEGIN DATA
1/1/2004 2/1/2004
1/1/2004 2/15/2004
1/30/2004 2/1/2004
END DATA.
COMPUTE months=DATEDIFF(date2, date1, "months").
  • El resultado será la parte entera del número de meses entre las dos fechas, con cualquier componente fraccional truncado.
  • Un "mes" se define como el mismo día del mes, un mes natural antes o después del segundo argumento de fecha.
  • Para los dos primeros casos, el resultado será 1, ya que tanto el 1 de febrero como el 15 de febrero de 2004, son mayores o iguales a un mes y menos de dos meses después del 1 de enero de 2004.
  • Para el tercer caso, el resultado será 0. Por definición, cualquier fecha de febrero de 2004 será inferior a un mes después del 30 de enero de 2004, lo que dará como resultado un valor de 0.