Função do 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 do DATEADD

Incrementa um TIMESTAMP valor DATE TIMETIMETZ,, ou em 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 obter 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 TIMESTAMP coluna DATETIME,TIMETZ,, ou uma expressão que se converte implicitamente em umDATE,, TIMETIMETZ, ou. TIMESTAMP A TIMESTAMP expressão DATETIME,TIMETZ,, ou deve conter a parte da data especificada.

Tipo de retorno

TIMESTAMPou TIME ou TIMETZ dependendo do tipo de dados de entrada.

Exemplos com uma DATE coluna

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

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 da coluna padrão para uma DATEADD função é 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 TIME coluna

A tabela de exemplo a seguir TIME _ TEST tem uma coluna TIME _ VAL (tipoTIME) 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 TEST tabela TIME _.

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 TIMETZ coluna

Os valores de saída nesses exemplos estão em UTC qual é o fuso horário padrão.

A tabela de exemplo a seguir TIMETZ _ TEST tem uma coluna TIMETZ _ VAL (tipoTIMETZ) 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 TEST tabela TIMETZ TIMETZ _ VAL in _.

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 TIMESTAMP coluna

Os valores de saída nesses exemplos estão em UTC qual é o fuso horário padrão.

A tabela de exemplo a seguir TIMESTAMP _ TEST tem uma coluna TIMESTAMP _ VAL (tipoTIMESTAMP) 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 VAL valores de TIMESTAMP _ em TIMESTAMP _ TEST de antes do 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 MONTHS funções DATEADD (month,...) e ADD _ tratam datas que caem no final dos meses de forma diferente:

  • ADD_MONTHS: Se a data que você está adicionando for o último dia do mês, o resultado será sempre o último dia do mês resultante, independentemente da duração 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 do resultado, o resultado será o dia correspondente do mês do 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 DATEADD função trata a data do 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