DATEADD: Como Adicionar ou Subtrair uma Unidade de Data a Partir de/Para uma Data

Como:

Linguagens Disponíveis: Reporting, Maintain

A função DATEADD adiciona ou subtrai uma unidade do formato completo de data de componente. Uma unidade é uma das seguintes opções:

DATEADD exige que as datas estejam no formato de data. O Dialogue Manager interpreta uma data como alfanumérica ou numérica e o DATEADD exige uma data padrão armazenada como um desvio da data base, portanto, não utilize o DATEADD 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.

Você adiciona ou subtrai datas que não possuem o dia (por exemplo, YM ou YQ) diretamente, sem utilizar DATEADD.

DATEADD funciona apenas com datas de componentes completas.


Topo da página

x
Sintaxe: Como Adicionar ou subtrair uma unidade de data a/de uma data
DATEADD(date, 'component', increment)

onde:

Data

Data

É uma data de componente completa.

componente

Alfanumérico

É uma das seguintes postas entre aspas simples:

Y indica um componente de ano.

M indica um componente de mês.

D indica um componente de dia.

WD indica um componente de dia da semana.

BD indica um componente de dia útil.

aumento

Inteiro

É o número de unidades de data adicionado ou subtraído dedate. Se este número não for uma unidade inteira, será arredondado para baixo para o próximo número inteiro maior.

Observação: DATEADD não utiliza um argumento output. Ele utiliza o formato do argumento date para o resultado. Enquanto o resultado for uma data de componente completa, ele poderá será atribuído apenas para um campo de data de componente completa ou para um campo inteiro.



Exemplo: Truncamento com DATEADD

O número de unidades passadas para o DATEADD é sempre um número inteiro. Por exemplo

DATEADD(DATE, 'M', 1.999)

adiciona um mês, pois o número de unidades é menor que dois.



Exemplo: Como Utilizar a Unidade Dia de Semana

Se você utilizar a unidade de dia de semana e um sábado ou domingo for a data de entrada, DATEADD alterará a data de entrada para segunda. A função

DATEADD('910623', 'WD', 1)

na qual DATE é Sábado ou Domingo gera Terça; Sábado e Domingo não são dias desemana, então, DATEADD começa na Segunda e adiciona um.

Observe que as aspas simples em volta do número no primeiro argumento, '910623', faz com que ele seja tratado como um literal de data natural.



Exemplo: Como Adicionar Dias Úteis a uma Data(Reporting)

DATEADD adiciona três dias da semana a NEW_DATE. Em alguns casos, esta função adiciona mais de três dias, pois, caso contrário, HIRE_DATE_PLUS_THREE cairia em um fim de semana.

TABLE FILE EMPLOYEE
PRINT FIRST_NAME AND HIRE_DATE AND COMPUTE
NEW_DATE/YYMD = HIRE_DATE;
HIRE_DATE_PLUS_THREE/YYMD = DATEADD(NEW_DATE, 'WD', 3);
BY LAST_NAME
WHERE DEPARTMENT EQ 'MIS';
END

A saída é:

LAST_NAME     FIRST_NAME  HIRE_DATE  NEW_DATE    HIRE_DATE_PLUS_THREE
---------     ----------  ---------  --------    --------------------
BLACKWOOD     ROSEMARIE    82/04/01  1982/04/01  1982/04/06
CROSS         BARBARA      81/11/02  1981/11/02  1981/11/05
GREENSPAN     MARY         82/04/01  1982/04/01  1982/04/06
JONES         DIANE        82/05/01  1982/05/01  1982/05/06
MCCOY         JOHN         81/07/01  1981/07/01  1981/07/06
SMITH         MARY         81/07/01  1981/07/01  1981/07/06


Exemplo: Como Determinar se uma Data é um Dia de Trabalho (Relatório)

DATEADD determina quais valores no campo TRANSDATE não representam dias de trabalho através da adição de zero dias a TRANSDATE utilizando a unidade de dias úteis. Se TRANSDATE não representa um dia útil, DATEADD exibe o próximo dia útil em relação a DATEX. TRANSDATE é então comparado com DATEX e o dia da semana é impresso para todas as datas que não correspondem entre os dois campos, resultando em uma lista de todos os dias que não são de trabalho.

DEFINE FILE VIDEOTRK
DATEX/YMD  = DATEADD(TRANSDATE, 'BD', 0);
DATEINT/I8YYMD = DATECVT(TRANSDATE, 'YMD','I8YYMD');
END
TABLE FILE VIDEOTRK
SUM TRANSDATE NOPRINT
COMPUTE DAYNAME/A8 = DOWKL(DATEINT, DAYNAME); AS 'Day of Week'
BY TRANSDATE AS 'Date'
WHERE TRANSDATE NE DATEX
END

A saída é:

Date      Day of Week 
----      ----------- 
91/06/22  SATURDAY
91/06/23  SUNDAY
91/06/30  SUNDAY


Exemplo: Como Adicionar Meses a uma Data (Maintain)

DATEADD adiciona meses ao campo DATE1:

MAINTAIN
compute DATE1/yymd = '20000101'
compute DATE2/yymd=dateadd(date1, 'M', 2, date2);
type "DATE1 = <<DATE1 + 2 MONTHS =  DATE2 = <<DATE2"
END

O resultado é:

DATE1 = 2000/01/01+ 2 MONTHS =  DATE2 = 2000/03/01

Information Builders