DATEADD: Cómo añadir o restar una unidad de fecha de una fecha

Cómo:

Idiomas disponibles: informes, Maintain

La función DATEADD añade o resta una unidad de un formato de fecha completo. Unidades:

DATEADD requiere que la fecha esté en un formato de fecha. Puesto que Dialogue Manager interpreta la fecha como alfanumérica o numérica, y DATEADD requiere la presencia de una fecha estándar almacenada como desplazamiento de la fecha base, evite utilizar DATEADD con Dialogue Manager, a menos que primero convierta la variable utilizada como fecha de entrada para un desplazamiento de la fecha base.

Para más información, consulte Cómo llamar a una función desde un comando de Dialogue Manager.

Las fechas que no estén basadas en días (por ejemplo, YM o YQ) se añaden o restan directamente, sin usar DATEADD.

DATEADD sólo funciona con fechas que incluyan todos los componentes.


Principio de página

x
Sintaxis: Cómo Añadir o restar una unidad de fecha de una fecha
DATEADD(date, 'component', increment)

donde:

date

Fecha

Es una fecha con todos los componentes.

component

Alfanumérico

Es una de las siguientes, entre comillas simples:

Y indica el componente de año.

M indica el componente de mes.

D indica el componente de día.

WD indica el componente de día de la semana.

BD indica el componente de día laborable.

increment

Número entero

Es el número de unidades de día añadido o restado de date. Si el número no es una unidad entera, se rebaja al entero más próximo.

Nota: DATEADD no utiliza el argumento output. Sino que utiliza el formato del argumento date para el resultado. Siempre que el resultado sea una fecha de componente completo, sólo podrá asignarse a un campo de fecha de componente completo o a un campo de número entero.



Ejemplo: Truncamiento con DATEADD

El número de unidades pasado a DATEADD siempre es una unidad entera. Por ejemplo

DATEADD(DATE, 'M', 1.999)

añade un mes, ya que el número de unidades es inferior a dos.



Ejemplo: Cómo usar la unidad de día de la semana

Si utiliza la unidad de día de la semana y la fecha de entrada es un sábado o un domingo, DATEADD cambia la fecha de entrada al lunes. La función

DATEADD('910623', 'WD', 1)

en que DATE es sábado o domingo, da como resultado el martes; el sábado y el domingo no son días de la semana, así que DATEADD empieza por el lunes y añade uno.

Tenga en cuenta que las comillas simples, alrededor del número del primer argumento, ‘910623’, hacen que éste sea tratado como un literal de fecha natural.



Ejemplo: Cómo añadir días de la semana a una fecha (Lenguaje de informes)

DATEADD añade tres días de la semana a NEW_DATE. En algunos casos se añaden más de tres de días ya que, de lo contrario, HIRE_DATE_PLUS_THREE caería en fin de semana.

TABLE FILE EMPLOYEE
PRINT FIRST_NAME AND HIRE_DATE AND COMPUTE
NEW_DATE/YYMD = HIRE_DATE;
HIRE_DATE_PLUS_THREE/YYMD = DATEADD(NEW_DATE, 'WD', 3);
BY LAST_NAME
WHERE DEPARTMENT EQ 'MIS';
END

La salida es:

LAST_NAME     FIRST_NAME  HIRE_DATE  NEW_DATE    HIRE_DATE_PLUS_THREE
---------     ----------  ---------  --------    --------------------
BLACKWOOD     ROSEMARIE    82/04/01  1982/04/01  1982/04/06
CROSS         BARBARA      81/11/02  1981/11/02  1981/11/05
GREENSPAN     MARY         82/04/01  1982/04/01  1982/04/06
JONES         DIANE        82/05/01  1982/05/01  1982/05/06
MCCOY         JOHN         81/07/01  1981/07/01  1981/07/06
SMITH         MARY         81/07/01  1981/07/01  1981/07/06


Ejemplo: Cómo determinar si una fecha es un día de trabajo (Lenguaje de informes)

DATEADD determina los valores del campo TRANSDATE que representan días de trabajo, añadiendo cero días a TRANSDATE con la unidad de día laborable. Si TRANSDATE no representa un día laborable, DATEADD devuelve el próximo día laborable a DATEX. A continuación, TRANSDATE se compara con DATEX, y el día de la semana se imprime para todas aquellas fechas que no coincidan en ambos campos, resultando en una lista de todos los días no laborables.

DEFINE FILE VIDEOTRK
DATEX/YMD  = DATEADD(TRANSDATE, 'BD', 0);
DATEINT/I8YYMD = DATECVT(TRANSDATE, 'YMD','I8YYMD');
END
TABLE FILE VIDEOTRK
SUM TRANSDATE NOPRINT
COMPUTE DAYNAME/A8 = DOWKL(DATEINT, DAYNAME); AS 'Day of Week'
BY TRANSDATE AS 'Date'
WHERE TRANSDATE NE DATEX
END

La salida es:

Date      Day of Week 
----      ----------- 
91/06/22  SATURDAY
91/06/23  SUNDAY
91/06/30  SUNDAY


Ejemplo: Cómo añadir meses a una fecha (Maintain)

DATEADD añade meses al campo DATE1:

MAINTAIN
compute DATE1/yymd = '20000101'
compute DATE2/yymd=dateadd(date1, 'M', 2, date2);
type "DATE1 = <<DATE1 + 2 MONTHS =  DATE2 = <<DATE2"
END

El resultado es:

DATE1 = 2000/01/01+ 2 MONTHS =  DATE2 = 2000/03/01

WebFOCUS