Como: |
Linguagens Disponíveis: Reporting, Maintain
A função DATEDIF retorna a diferença entre duas datas padrão de componentes completos em unidades de um componente especificado. Um componente é uma das seguintes opções:
Se uma ou ambas as datas for no fim do mês, DATEDIF irá considerar esta informação. Isto significa que a diferença entre 31 de janeiro e 30 de abril é de três meses, não de dois meses.
DATEDIF exibe um número inteiro. Se a diferença entre duas datas não for um número inteiro, DATEDIF irá truncar o valor para o próximo valor mais alto. Por exemplo, o número de anos entre 2 de março de 2001 e 1º de março de 2002 é zero. Se a data final for anterior á data inicial, DATEDIF exibirá um número negativo.
Você pode descobrir a diferença entre datas que não tem o dia como base (por exemplo, YM ou YQ) diretamente, sem a utilização do DATEDIF.
O Dialogue Manager interpreta uma data como alfanumérica ou numérica e o DATEIF exige uma data padrão armazenada como um desvio da data base, portanto, não utilize o DATEIF com o Dialogue Manager a não ser que você primeiro converta a variável utilizada como a data de entrada em um desvio da data base.
DATEDIF funciona apenas com datas de componentes completas.
DATEDIF(from_date, to_date, 'component')
onde:
Data
É a data inicial a partir da qual calcular a diferença. É uma data de componente completa.
Data
É a data final a partir da qual calcular a diferença.
Alfanumérico
É uma das seguintes postas entre aspas simples:
Y indica uma unidade de ano.
M indica uma unidade de mês.
D indica uma unidade de dia.
WD indica uma unidade de dia da semana.
BD indica uma unidade de dia útil.
Observação: DATEIF não utiliza um argumento output, pois usa o formato 'I8' para o resultado.
DATEDIF calcula a diferença entre março 2, 1996 e março 1, 1997, e exibe um zero, pois a diferença é menor que um ano:
DATEDIF('19960302', '19970301', 'Y')
As expressões a seguir exibem um resultado de menos um mês:
DATEDIF('19990228', '19990128', 'M') DATEDIF('19990228', '19990129', 'M') DATEDIF('19990228', '19990130', 'M') DATEDIF('19990228', '19990131', 'M')
Exemplos adicionais:
DATEDIF( 'março 31 2001', 'maio 31 2001', 'M') resulta em 2.
DATEDIF( 'março 31 2001', 'maio 30 2001', 'M') resulta em 1 (pois maio 30 não é o último dia do mês).
DATEDIF( 'março 31 2001', 'abril 30 2001', 'M') resulta em 1.
DATECVT converte as datas de legado em HIRE_DATE e DAT_INC para o formato de data YYMD. Em seguida, DATEDIF utiliza estes formatos de data para determinar o número de dias de semana entre NEW_HIRE_DATE e NEW_DAT_INC:
TABLE FILE EMPLOYEE
PRINT FIRST_NAME AND
COMPUTE NEW_HIRE_DATE/YYMD = DATECVT(HIRE_DATE, 'I6YMD', 'YYMD'); AND
COMPUTE NEW_DAT_INC/YYMD = DATECVT(DAT_INC, 'I6YMD', 'YYMD'); AND
COMPUTE WDAYS_HIRED/I8 = DATEDIF(NEW_HIRE_DATE, NEW_DAT_INC, 'WD');
BY LAST_NAME
IF WDAYS_HIRED NE 0
WHERE DEPARTMENT EQ 'PRODUCTION';
END
A saída é:
LAST_NAME FIRST_NAME NEW_HIRE_DATE NEW_DAT_INC WDAYS_HIRED --------- ---------- ------------- ----------- ----------- IRVING JOAN 1982/01/04 1982/05/14 94 MCKNIGHT ROGER 1982/02/02 1982/05/14 73 SMITH RICHARD 1982/01/04 1982/05/14 94 STEVENS ALFRED 1980/06/02 1982/01/01 414 ALFRED 1980/06/02 1981/01/01 153
DATEDIF determina o número de anos entre DATE2 e DATE1:
MAINTAIN Case Top compute DATE1/yymd = '20020717'; compute DATE2/yymd = '19880705'; COmpute DIFF/I3= DATEDIF(DATE2, DATE1, 'Y', DIFF); type "<<DATE1 - <<DATE2 = <DIFF YEARS" ENDCASE END
O resultado é:
2002/07/17 - 1988/07/05 = 14 YEARS
Information Builders |