HGETZ: Como Classificar o Tempo Universal Coordenado Atual em um Campo Data-Hora

Como:

Linguagens Disponíveis: Reporting, Maintain

HGETZ fornece o Tempo Universal Coordenado (UTC/GMT, também chamada de horário Zulu). O UTC é o padrão de hora primário pelo qual o mundo regula seus relógios.

O valor é exibido no formato de data-hora desejado. Se os valores dos milissegundos e microssegundos não estiverem disponíveis no seu ambiente operacional, a funções obterá o valor zero para estes componentes.


Topo da página

x
Sintaxe: Como Armazenar a Data e a Hora Universais Atuais em um Data e Hora
HGETZ(length, output)

onde:

comprimento

Inteiro

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

  • 8 indica um valor de hora que inclui milissegundos.
  • 10 indica um valor de hora que inclui microssegundos.
  • 12 indica um valor de hora que inclui nanossegundos.
saída

Data-hora

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



Exemplo: Como Armazenar a Data e a Hora Universais Atuais em um Campo Data-Hora (Reporting)

HGETZ armazena a data e hora universais atuais em DT2:

TABLE FILE VIDEOTRK
PRINT CUSTID AND COMPUTE
DT2/HYYMDm = HGETZ(10, 'HYYMDm');
WHERE CUSTID GE '2000' AND CUSTID LE '3000';
END

A saída é:

  CUSTID  DT2                  
  ------  ---                        
  2165    2015/05/08 14:43:08.740000
  2187    2015/05/08 14:43:08.740000
  2280    2015/05/08 14:43:08.740000
  2282    2015/05/08 14:43:08.740000
  2884    2015/05/08 14:43:08.740000


Exemplo: Como Calcular o Fuso Horário

O fuso horário pode ser calculado como um desvio de hora positivo ou negativo do GMT. Locais ao oeste do meridiano primário possuem um desvio negativo. A solicitação a seguir utiliza a função HGETC para obter a hora local e a função HGETZ para obter a hora do GMT. A função HDIFF calcula o número de limites entres eles em minutos. A zona é encontrada através da divisão dos minutos por 60:

DEFINE FILE EMPLOYEE
LOCALTIME/HYYMDS = HGETC(8, LOCALTIME);
UTCTIME/HYYMDS = HGETZ(8, UTCTIME);
MINUTES/D4= HDIFF(LOCALTIME, UTCTIME, 'MINUTES', 'D4');
ZONE/P3 = MINUTES/60;
END
TABLE FILE EMPLOYEE
PRINT EMP_ID NOPRINT OVER
LOCALTIME  OVER
UTCTIME OVER
MINUTES OVER
ZONE
IF RECORDLIMIT IS 1
END

A saída é:

  LOCALTIME  2015/05/12 12:47:04
  UTCTIME    2015/05/12 16:47:04
  MINUTES                   -240
  ZONE                        -4

Information Builders