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.
DATEADD(date, 'component', increment)
donde:
Fecha
Es una fecha con todos los componentes.
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.
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.
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.
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.
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
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
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 |