- Categorias:
TIMEADD¶
Adiciona o valor especificado para a parte de data ou hora especificada a uma data, hora ou carimbo de data/hora.
Alias para DATEADD.
Sintaxe¶
TIMEADD( <date_or_time_part> , <value> , <date_or_time_expr> )
Argumentos¶
date_or_time_part
Isto indica as unidades de tempo que você deseja adicionar. Por exemplo, se você quiser adicionar 2 dias, então a unidade será
DAY
. Esta unidade de medida deve ser um dos valores listados em Partes de data e hora com suporte.value
Este é o número de unidades de tempo que você deseja adicionar. Por exemplo, se você quiser adicionar 2 dias, então o valor será 2.
date_or_time_expr
date_or_time_expr
deve avaliar como uma data hora, ou carimbo de data/hora. Esta é a data, hora ou carimbo de data/hora a que você deseja adicionar. Por exemplo, se você quiser acrescentar 2 dias a 1º de agosto de 2018, então isto será'2018-08-01'::DATE
.Se o tipo de dados for TIME, então o
date_or_time_part
deverá estar em unidades de horas ou menor, não em dias ou maior.Se o tipo de dados de entrada for DATE, e o
date_or_time_part
for hora ou menor, o valor de entrada não será rejeitado, mas será tratado como um TIMESTAMP com horas, minutos, segundos e frações de segundo todos inicialmente definidos como 0 (por exemplo, meia-noite na data especificada).
Retornos¶
Se date_or_time_expr
for uma hora:
O tipo de dados de retorno é uma hora.
Se date_or_time_expr
for um carimbo de data/hora:
O tipo de dados de retorno é um carimbo de data/hora.
Se date_or_time_expr
for uma data:
Se
date_or_time_part
forday
ou maior (por exemplo,month
,year
), a função retorna um valor DATE.Se
date_or_time_part
for menor que um dia (por exemplo,hour
,minute
,second
), a função retorna um valor TIMESTAMP_NTZ, com 00:00:00.000 como hora de início para a data.
Notas de uso¶
Quando
date_or_time_part
foryear
,quarter
oumonth
(ou qualquer uma de suas variações), se o mês de resultado tiver menos dias do que o dia original do mês, o dia de resultado do mês poderá ser diferente do dia original.
Exemplos¶
Adicionar anos a uma data:
SELECT TO_DATE('2013-05-08') AS v1, DATEADD(year, 2, TO_DATE('2013-05-08')) AS v;Saída:
+------------+------------+ | V1 | V | |------------+------------| | 2013-05-08 | 2015-05-08 | +------------+------------+
Adicionar 2 anos e 2 horas a uma data:
Configuração inicial deste exemplo e alguns exemplos subsequentes:
ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF9'; CREATE TABLE datetest (d date); INSERT INTO datetest VALUES ('2013-04-05');Consultar para adicionar 2 anos e 2 horas a uma data:
SELECT d AS "DATE", dateadd(year, 2, d) AS add_2_years, dateadd(hour, 2, d) AS add_2_hours FROM datetest;Saída:
+------------+-------------+-------------------------+ | DATE | ADD_2_YEARS | ADD_2_HOURS | |------------+-------------+-------------------------| | 2013-04-05 | 2015-04-05 | 2013-04-05 02:00:00.000 | +------------+-------------+-------------------------+
Adicionar horas a um carimbo de data/hora:
SELECT TO_TIMESTAMP_LTZ('2013-05-08 11:22:33.444') AS v1, DATEADD(HOUR, 2, TO_TIMESTAMP_LTZ('2013-05-08 11:22:33.444')) AS v;Saída:
+-------------------------------+-------------------------------+ | V1 | V | |-------------------------------+-------------------------------| | 2013-05-08 11:22:33.444000000 | 2013-05-08 13:22:33.444000000 | +-------------------------------+-------------------------------+
Adicionar um mês a uma data em um mês com o mesmo ou mais dias do que o mês resultante. Por exemplo, se a dia de hoje fosse 31 de janeiro, então acrescentar um mês não deve resultar em “31 de fevereiro”.
SELECT DATEADD(MONTH, 1, '2000-01-31'::DATE) AS DIFFERENT_DAY;Saída:
+---------------+ | DIFFERENT_DAY | |---------------| | 2000-02-29 | +---------------+
Adicione um mês a uma data em um mês com menos dias do que o mês resultante. Adicionar um mês a 29 de fevereiro deve resultar em 29 de março, que é seguro.
SELECT DATEADD(MONTH, 1, '2000-02-29'::DATE) AS RESULT;Saída:
+------------+ | RESULT | |------------| | 2000-03-29 | +------------+