HMASK: Como Extrair Componentes Data-Hora e preservar os Componentes Remanescentes

Como:

Referência:

Linguagens Disponíveis: Reporting, Maintain

A função HMASK extrai um ou mais componentes de um valor data-hora e os move para um campo data-hora de destino com todos os outros componentes do campo de destino preservados.


Topo da página

x
Sintaxe: Como Mover vários componentes Data-Hora para um campo Data-Hora de destino
HMASK(source, 'componentstring', input, length, output)

onde:

source

É o valor de data-hora do qual os componentes especificados são extraídos.

componentstring

É uma string de códigos, em qualquer ordem, que indica que os componentes devem ser extraídos e movidos para o campo de saída data-hora. A tabela a seguir exibe os valores válidos. A string é considerada eliminada por qualquer caractere que não esteja na lista:

Código

Descrição

L

século (somente os dois dígitos de alta ordem de um ano com quatro dígitos)

Y

ano (apenas os dois últimos dígitos dos quatro dígitos do ano)

AA

Ano com quatro dígitos.

M

mês

D

dia

H

Hora

I

minutos

S

segundos

s

milisegundos (os três primeiros dígitos dos seis dígitos de microsegundo)

u

microsegundos (os três dígitos menores do valor de seis-dígitos em microsegundos)

n

Todos os seis dígitos dos microssegundos

F

Três dígitos de baixa ordem de nove dígitos decimais.

input

É o valor de data-hora que fornece todos os componentes dos resultados que não estão especificados na string de componentes.

comprimento

É o comprimento do valor data-hora retornado. Valores válidos são:

  • 8 indica um valor de tempo que inclui de um a três dígitos decimais (milissegundos).
  • 10 indica um valor de tempo que inclui de quatro a dez dígitos decimais (microssegundos).
  • 12 indica um valor de tempo que inclui de sete a nove dígitos decimais (nanossegundos).
saída

É o campo que contém o resultado ou o formato do valor de saída posto entre aspas simples). Este campo deve ter o formato data-hora (tipo de dados H).



x
Referência: Observações sobre o Uso para a Função HMASK

O processamento HMASK está sujeito à definição DTSTRICT. Mover o componente do dia (D) sem o componente do mês (M) podegerar um resultado inválido, que não é permitido se a definição DTSTRICT estiver ativada (ON). Valores data-hora inválidos fazem com que qualquer função data-hora resulte em zeros.



Exemplo: Como Alterar um Campo Data-Hora Utilizando HMASK

A fonte de dados tem um campo data-hora chamado TRANSDATE de tipo HYYMDI. A solicitação a seguir altera qualquer valor TRANSDATE com um componente de hora maior que 11:00 até as 8:30 do dia seguinte. Primeiramente, a função HEXTR extrai a parte da hora e minutos do valor e a compara com 11:00. Se for maior que 11:00, a função HADD chama HMASK para alterar a hora para 8:30 e adiciona um dia à data:

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

A saída é

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

Information Builders