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.
DATEADD(date, 'component', increment)
onde:
Data
É uma data de componente completa.
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.
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.
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.
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.
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
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
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 |