HMASK: Cómo extraer los componentes de fecha-hora y mantener los componentes restantes

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.


Principio de página

x
Sintaxis: Cómo Mover múltiples componentes de fecha-hora a un campo fecha-hora de destino
HMASK(source, 'componentstring', input, length, output)

donde:

source

Es el valor de fecha-hora del que se van a extraer los componentes especificados.

componentstring

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.

input

Es el valor de fecha-hora que proporciona todos los componentes de la salida que no aparecen en la cadena de componentes.

length

Es la longitud del valor devuelto de fecha-hora. Los valores válidos son:

  • 8 indica un valor de hora que incluye entre uno y tres dígitos decimales (milisegundos).
  • 10 indica un valor de hora que incluye entre cuatro y seis dígitos decimales (microsegundos).
  • 12 indica un valor de hora que incluye entre siete y nueve dígitos decimales (nanosegundos).
output

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).



x
Referencia: Notas de uso de la función HMASK

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.



Ejemplo: Cómo cambiar un campo fecha-hora utilizando HMASK

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