Função DATEADD - AWS Clean Rooms

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Função DATEADD

Incrementa um valor DATE, TIME, TIMETZ ou TIMESTAMP com um intervalo especificado.

Sintaxe

DATEADD( datepart, interval, {date|time|timetz|timestamp} )

Argumentos

datepart

A parte da data (ano, mês, dia ou hora, por exemplo) sobre a qual a função atua. Para ter mais informações, consulte Partes da data para funções de data ou de timestamp.

interval

Um número inteiro que especificou o intervalo (número de dias, por exemplo) a adicionar à expressão de destino. Um número inteiro negativo subtrai o intervalo.

date|time|timetz|timestamp

Uma coluna DATE, TIME, TIMETZ ou TIMESTAMP ou uma expressão que converta implicitamente para DATE, TIME, TIMETZ ou TIMESTAMP A expressão DATE, TIME, TIMETZ ou TIMESTAMP deve conter a parte de data especificada.

Tipo de retorno

TIMESTAMP, TIME ou TIMETZ, dependendo do tipo de dados de entrada.

Exemplos com uma coluna DATE

O exemplo a seguir adiciona 30 dias a cada data em novembro que existe na tabela DATE.

select dateadd(day,30,caldate) as novplus30 from date where month='NOV' order by dateid; novplus30 --------------------- 2008-12-01 00:00:00 2008-12-02 00:00:00 2008-12-03 00:00:00 ... (30 rows)

O exemplo a seguir adiciona 18 meses a um valor de data literal.

select dateadd(month,18,'2008-02-28'); date_add --------------------- 2009-08-28 00:00:00 (1 row)

O nome padrão da coluna para uma função DATEADD é DATE_ADD. O timestamp padrão para um valor de data é 00:00:00.

O exemplo a seguir adiciona 30 minutos a um valor de data que não especifica um timestamp.

select dateadd(m,30,'2008-02-28'); date_add --------------------- 2008-02-28 00:30:00 (1 row)

Você pode nomear as partes da data por completo ou abreviá-las. Neste caso, m significa minutos, não meses.

Exemplos com uma coluna TIME

O TIME_TEST da tabela a seguir tem uma coluna TIME_VAL (tipo TIME) com três valores inseridos.

select time_val from time_test; time_val --------------------- 20:00:00 00:00:00.5550 00:58:00

O exemplo a seguir adiciona 5 minutos a cada TIME_VAL na tabela TIME_TEST.

select dateadd(minute,5,time_val) as minplus5 from time_test; minplus5 --------------- 20:05:00 00:05:00.5550 01:03:00

O exemplo a seguir adiciona 8 horas a um valor de tempo literal.

select dateadd(hour, 8, time '13:24:55'); date_add --------------- 21:24:55

O exemplo a seguir mostra quando um tempo passa por 24:00:00 ou abaixo de 00:00:00.

select dateadd(hour, 12, time '13:24:55'); date_add --------------- 01:24:55

Exemplos com uma coluna TIMETZ

Os valores de saída nestes exemplos estão em UTC, que é o fuso horário padrão.

O TIMETZ_TEST da tabela de exemplo a seguir tem uma coluna TIMETZ_VAL (tipo TIMETZ) com três valores inseridos.

select timetz_val from timetz_test; timetz_val ------------------ 04:00:00+00 00:00:00.5550+00 05:58:00+00

O exemplo a seguir adiciona 5 minutos a cada TIMETZ_VAL na tabela TIMETZ_TEST.

select dateadd(minute,5,timetz_val) as minplus5_tz from timetz_test; minplus5_tz --------------- 04:05:00+00 00:05:00.5550+00 06:03:00+00

O exemplo a seguir adiciona 2 horas a um valor timetz literal.

select dateadd(hour, 2, timetz '13:24:55 PST'); date_add --------------- 23:24:55+00

Exemplos com uma coluna TIMESTAMP

Os valores de saída nestes exemplos estão em UTC, que é o fuso horário padrão.

O exemplo de tabela TIMESTAMP_TEST a seguir tem uma coluna TIMESTAMP_VAL (tipo TIMESTAMP) com três valores inseridos.

SELECT timestamp_val FROM timestamp_test; timestamp_val ------------------ 1988-05-15 10:23:31 2021-03-18 17:20:41 2023-06-02 18:11:12

O exemplo a seguir adiciona 20 anos somente aos valores de TIMESTAMP_VAL em TIMESTAMP_TEST anteriores ao ano 2000.

SELECT dateadd(year,20,timestamp_val) FROM timestamp_test WHERE timestamp_val < to_timestamp('2000-01-01 00:00:00', 'YYYY-MM-DD HH:MI:SS'); date_add --------------- 2008-05-15 10:23:31

O exemplo a seguir adiciona 5 segundos a um valor literal de carimbo de data/hora gravado sem um indicador de segundos.

SELECT dateadd(second, 5, timestamp '2001-06-06'); date_add --------------- 2001-06-06 00:00:05

Observações de uso

As funções DATEADD(month, …) e ADD_MONTHS lidam com datas que caiam no final do mês de forma diferente.

  • ADD_MONTHS: Se a data que você estiver adicionando for o último dia do mês, o resultado será sempre o último dia do mês do resultado, independentemente do tamanho do mês. Por exemplo, 30 de abril + 1 mês é o dia 31 de maio.

    select add_months('2008-04-30',1); add_months --------------------- 2008-05-31 00:00:00 (1 row)
  • DATEADD: Se houver menos dias na data que você está adicionando do que no mês de resultado, o resultado será o dia correspondente do mês de resultado, não o último dia desse mês. Por exemplo, 30 de abril + 1 mês é o dia 30 de maio.

    select dateadd(month,1,'2008-04-30'); date_add --------------------- 2008-05-30 00:00:00 (1 row)

A função DATEADD lida com a data de ano bissexto 02-29 de forma diferente ao usar dateadd(month, 12,…) ou dateadd(year, 1, …).

select dateadd(month,12,'2016-02-29'); date_add --------------------- 2017-02-28 00:00:00 select dateadd(year, 1, '2016-02-29'); date_add --------------------- 2017-03-01 00:00:00