Como: Referência: |
Linguagens Disponíveis: Reporting, Maintain
A função HDIFF calcula o número de unidades de componentes de data ou hora entre dois valores data-hora.
HDIFF efetua sua subtração de forma diferente do DATEDIF, que subtrai os componentes de data armazenados em campos de data. O cáculo DATEDIF procura por anos e meses inteiros. Portanto, subtrair as duas datas a seguir e solicitar o número de meses ou anos resulta em 0:
DATE1 12/25/2014, DATE2 1/5/2015
Desempenhar o mesmo cálculo utilizando HDIFF em campos data-hora resulta em um valor de 1 mês ou 1 ano já que, neste caso, o mês ou ano é o primeiro a ser extraído de cada valor data-hora e, em seguida, a subtração ocorre.
HDIFF(end_dt, start_dt, 'component', output)
onde:
Data-hora
É o valor data-hora da qual se deve subtrair, o nome de um campo data-hora que contém o valor ou uma expressão que resulta no valor.
Data-hora
É o valor data-hora da qual se deve subtrair, o nome de um campo data-hora que contém o valor ou uma expressão que resulta no valor.
Alfanumérico
É o nome do componente a ser utilizado no cálculo entre aspas simples. Se o componente for uma semana, a configuração do parâmetro WEEKFIRST será usada no cálculo".
Dupla precisão com ponto flutuante
É o campo que contém o resultado ou o formato do valor de saída posto entre aspas simples. O formato deve ser de dupla precisão com ponto flutuante.
HDIFF calcula o número de dias entre os campos TRANSDATE e ADD_MONTH e armazena o resultado em DIFF_PAYS, que possui o formato D12.2:
TABLE FILE VIDEOTR2
PRINT CUSTID TRANSDATE AS 'DATE-TIME' AND COMPUTE
ADD_MONTH/HYYMDS = HADD(TRANSDATE, 'MONTH', 2, 8, 'HYYMDS');
DIFF_DAYS/D12.2 = HDIFF(ADD_MONTH, TRANSDATE, 'DAY', 'D12.2');
WHERE DATE EQ 2000;
END
A saída é:
CUSTID DATE-TIME ADD_MONTH DIFF_DAYS ------ --------- --------- --------- 1237 2000/02/05 03:30 2000/04/05 03:30:00 60.00 1118 2000/06/26 05:45 2000/08/26 05:45:00 61.00
HDIFF calcula o número de dias entre ADD_MONTH e DT1:
MAINTAIN FILE DATETIME
FOR 1 NEXT ID INTO STK;
COMPUTE
NEW_DATE/HYYMDS = HADD(STK.DT1, 'MONTH', 2,10, NEW_DATE);
DIFF_DAYS/D12.2 = HDIFF(NEW_DATE,STK.DT1,'DAY', DIFF_DAYS);
TYPE "STK(1).DT1 = "STK(1).DT1;
TYPE "NEW_DATE = "NEW_DATE;
TYPE "DIFF_DAYS = "DIFF_DAYS
END
Information Builders |