Cómo: |
Idiomas disponibles: informes, Maintain
La función DATEMOV cambia la fecha a un punto significativo del calendario.
Puesto que Dialogue Manager interpreta la fecha como alfanumérica o numérica, y DATEMOV requiere la presencia de una fecha estándar almacenada como desplazamiento de la fecha base, evite utilizar DATEMOV 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
DATEMOV sólo funciona con fechas que incluyan todos los componentes.
DATEMOV(date, 'move-point')
donde:
Fecha
Es la fecha que se va a cambiar. Debe ser una fecha de formato de componente completo (por ejemplo, MDYY o YYJUL).
Alfanumérico
Es el punto significativo al que se cambia la fecha, entre comillas simples. Al introducir un punto no válido, se obtiene un código de retorno de cero. Los valores válidos son:
EOM es el final del mes.
BOM es el principio del mes.
EOQ es el final del trimestre.
BOQ es el principio del trimestre.
EOY es el final del año.
BOY es el principio del año.
EOW es el final de la semana.
BOW es el principio de la semana.
NWD es el próximo día de la semana.
NBD es el próximo día laborable.
PWD es el día anterior de la semana.
PBD es el día laborable anterior.
WD- es un día de la semana o anterior.
BD- es un día laborable o anterior.
WD+ es un día de la semana o posterior.
BD+ es un día laborable o posterior.
Los cálculos de días laborables se ven afectados por las configuraciones de los parámetros BUSDAYS y HDAY.
Nota: DATEMOV no usa un argumento output, sino que emplea 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 parámetro BUSDAYS establece como días laborables el lunes, martes, miércoles y jueves. DATECVT convierte las fecha legacy HIRE_DATE al formato de fecha YYMD y proporciona opciones de visualización de fechas. A continuación, DATEMOV determina los puntos significativos de HIRE_DATE.
SET BUSDAY = _MTWT__ TABLE FILE EMPLOYEE PRINT COMPUTE NEW_DATE/YYMD = DATECVT(HIRE_DATE, 'I6YMD', 'YYMD'); AND COMPUTE NEW_DATE/WT = DATECVT(HIRE_DATE, 'I6YMD', 'WT'); AS 'DOW' AND COMPUTE NWD/WT = DATEMOV(NEW_DATE, 'NWD'); AND COMPUTE PWD/WT = DATEMOV(NEW_DATE, 'PWD'); AND COMPUTE WDP/WT = DATEMOV(NEW_DATE, 'WD+'); AS 'WD+' AND COMPUTE WDM/WT = DATEMOV(NEW_DATE, 'WD-'); AS 'WD-' AND COMPUTE NBD/WT = DATEMOV(NEW_DATE, 'NBD'); AND COMPUTE PBD/WT = DATEMOV(NEW_DATE, 'PBD'); AND COMPUTE WBP/WT = DATEMOV(NEW_DATE, 'BD+'); AS 'BD+' AND COMPUTE WBM/WT = DATEMOV(NEW_DATE, 'BD-'); AS 'BD-' BY LAST_NAME NOPRINT HEADING "Examples of DATEMOV" "Business days are Monday, Tuesday, Wednesday, + Thursday " " " "START DATE.. | MOVE POINTS..........................." WHERE DEPARTMENT EQ 'MIS'; END
La salida es:
Examples of DATEMOV Business days are Monday, Tuesday, Wednesday, + Thursday START DATE.. | MOVE POINTS........................... NEW_DATE DOW NWD PWD WD+ WD- NBD PBD BD+ BD- -------- --- --- --- --- --- --- --- --- --- 1982/04/01 THU FRI WED THU THU MON WED THU THU 1981/11/02 MON TUE FRI MON MON TUE THU MON MON 1982/04/01 THU FRI WED THU THU MON WED THU THU 1982/05/01 SAT TUE THU MON FRI TUE WED MON THU 1981/07/01 WED THU TUE WED WED THU TUE WED WED 1981/07/01 WED THU TUE WED WED THU TUE WED WED
DATEMOV determina el final de la semana de cada fecha situada en HIRE_DATE y guarda el resultado en EOW:
TABLE FILE EMPLOYEE
PRINT FIRST_NAME AND
COMPUTE NEW_DATE/YYMDWT = DATECVT(HIRE_DATE, 'I6YMD', 'YYMDWT'); AND
COMPUTE EOW/YYMDWT = DATEMOV(NEW_DATE, 'EOW');
BY LAST_NAME
WHERE DEPARTMENT EQ 'PRODUCTION';
END
La salida es:
LAST_NAME FIRST_NAME NEW_DATE EOW --------- ---------- -------- --- BANNING JOHN 1982 AUG 1, SUN 1982 AUG 6, FRI IRVING JOAN 1982 JAN 4, MON 1982 JAN 8, FRI MCKNIGHT ROGER 1982 FEB 2, TUE 1982 FEB 5, FRI ROMANS ANTHONY 1982 JUL 1, THU 1982 JUL 2, FRI SMITH RICHARD 1982 JAN 4, MON 1982 JAN 8, FRI STEVENS ALFRED 1980 JUN 2, MON 1980 JUN 6, FRI
DATEMOV determina el final de la semana de cada fecha:
MAINTAIN
COMPUTE X/YYMDWT='20020717';
COMPUTE Y/YYMDWT=DATEMOV(X, 'EOW', Y);
TYPE "<<X <<Y END OF WEEK "
END
El resultado es:
2002/07/17, WED 2002/07/19, FRI END OF WEEK
Information Builders |