Cómo: Referencia: |
Idiomas disponibles: informes, Maintain
La función HMASK extrae uno o varios componentes de un valor de fecha-hora y los mueve a un campo fecha-hora de destino, manteniendo el resto de los componentes del campo de destino.
HMASK(source, 'componentstring', input, length, output)
donde:
Es el valor de fecha-hora del que se van a extraer los componentes especificados.
Es una cadena de códigos, en cualquier orden, que indica los componentes que serán extraídos y colocados en el campo fecha-hora de salida. La siguiente tabla muestra los valores válidos. Se considera que la cadena termina con cualquier carácter que no se encuentre en la lista:
Código | Descripción |
---|---|
C | siglo (los dos dígitos de orden superior sólo en el año de cuatro dígitos) |
Y | año (los dos dígitos de orden inferior, únicamente del año de cuatro dígitos) |
YY | Año de cuatro dígitos. |
M | month |
D | day |
H | hora |
I | minutos |
S | segundos |
s | milisegundos (los tres dígitos de orden superior del valor de microsegundos de seis dígitos) |
u | microsegundos (los tres dígitos de orden inferior del valor de microsegundos de seis dígitos) |
m | Los seis dígitos del valor de microsegundos. |
n | Los tres dígitos de orden inferior de nueve dígitos decimales. |
Es el valor de fecha-hora que proporciona todos los componentes de la salida que no aparecen en la cadena de componentes.
Es la longitud del valor devuelto de fecha-hora. Los valores válidos son:
Es el campo que contiene el resultado, o el formato del valor de salida entre comillas simples. Este campo debe estar en formato de fecha-hora (datos de tipo H).
El procesamiento de HMASK depende de la propiedad DTSTRICT. Si mueve el componente de día (D) sin el de mes (M), se puede producir un resultado no válido, lo que resulta imposible cuando DTSTRICT se encuentra activado. Los valores de fecha-hora no válidos pueden provocar que las funciones de fecha-hora devuelvan ceros.
El origen de datos VIDEOTRK tiene un campo fecha-hora llamado TRANSDATE, en formato HYYMDI. La siguiente solicitud cambia cualquier valor de TRANSDATE por un componente de hora superior a de 11:00 a 8:30 del día siguiente. Primero, la función HEXTR extrae la porción de hora y minutos del valor y la compara con 11:00. Si mayor que 11.00, la función HADD llama a HMASK para que cambie la hora a las 08:30 y añade un día a la fecha:
DEFINE FILE VIDEOTR2 ORIG_TRANSDATE/HYYMDI = TRANSDATE; TRANSDATE = IF HEXTR(TRANSDATE, 'HI', 8, 'HHI') GT DT(12:00) THEN HADD (HMASK(DT(08:30), 'HISs', TRANSDATE, 8, 'HYYMDI'), 'DAY', 1,8, 'HYYMDI') ELSE TRANSDATE; END TABLE FILE VIDEOTR2 PRINT ORIG_TRANSDATE TRANSDATE BY LASTNAME BY FIRSTNAME WHERE ORIG_TRANSDATE NE TRANSDATE END
La salida es
LASTNAME FIRSTNAME ORIG_TRANSDATE TRANSDATE -------- --------- -------------- --------- BERTAL MARCIA 1999/07/29 12:19 1999/07/30 08:30 GARCIA JOANN 1998/05/08 12:48 1998/05/09 08:30 1999/11/30 12:12 1999/12/01 08:30 PARKER GLENDA 1999/01/06 12:22 1999/01/07 08:30 RATHER MICHAEL 1998/02/28 12:33 1998/03/01 08:30 WILSON KELLY 1999/06/26 12:34 1999/06/27 08:30
WebFOCUS |