DATEDIF: Como Encontrar a Diferença entre Duas Datas

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:

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.


Topo da página

x
Sintaxe: Como Localizar a Diferença entre Duas Datas
DATEDIF(from_date, to_date, 'component')

onde:

from_date

Data

É a data inicial a partir da qual calcular a diferença. É uma data de componente completa.

to_date

Data

É a data final a partir da qual calcular a diferença.

componente

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.



Exemplo: Truncamento com DATEDIF

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


Exemplo: Como Utilizar Cálculos de Mês

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.



Exemplo: Como Descobrir o Número de Dias de Semana entre Duas Datas (Reporting)

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


Exemplo: Como Descobrir o Número de Dias de Semana entre Duas Datas (Maintain)

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