- 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 dois dias, especifique
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 a unidade de tempo for
day
, e você quiser adicionar dois dias, especifique2
. Se você quiser subtrair dois dias, especifique-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 adicionar dois dias a 1º de agosto de 2024, especifique'2024-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 um segundo, todos inicialmente definidos como 0 (por exemplo, meia-noite na data especificada).
Retornos¶
Se date_or_time_expr
for um horário, então o tipo de dados de retorno será um horário.
Se date_or_time_expr
for um carimbo de data/hora, então o tipo de dados de retorno será 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 retornará um valor TIMESTAMP_NTZ, com00:00:00.000
como hora inicial da data.
Notas de uso¶
Quando date_or_time_part
for year
, quarter
ou month
(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('2022-05-08') AS original_date,
DATEADD(year, 2, TO_DATE('2022-05-08')) AS date_plus_two_years;
+---------------+---------------------+
| ORIGINAL_DATE | DATE_PLUS_TWO_YEARS |
|---------------+---------------------|
| 2022-05-08 | 2024-05-08 |
+---------------+---------------------+
Subtração de anos de uma data:
SELECT TO_DATE('2022-05-08') AS original_date,
DATEADD(year, -2, TO_DATE('2022-05-08')) AS date_minus_two_years;
+---------------+----------------------+
| ORIGINAL_DATE | DATE_MINUS_TWO_YEARS |
|---------------+----------------------|
| 2022-05-08 | 2020-05-08 |
+---------------+----------------------+
Adicione dois anos e duas horas a uma data. Primeiro, defina o formato de saída do carimbo de data/hora, crie uma tabela e insira os dados:
ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF9';
CREATE TABLE datetest (d date);
INSERT INTO datetest VALUES ('2022-04-05');
Execute uma consulta que adicione dois anos e duas horas a uma data:
SELECT d AS original_date,
DATEADD(year, 2, d) AS date_plus_two_years,
TO_TIMESTAMP(d) AS original_timestamp,
DATEADD(hour, 2, d) AS timestamp_plus_two_hours
FROM datetest;
+---------------+---------------------+-------------------------+--------------------------+
| ORIGINAL_DATE | DATE_PLUS_TWO_YEARS | ORIGINAL_TIMESTAMP | TIMESTAMP_PLUS_TWO_HOURS |
|---------------+---------------------+-------------------------+--------------------------|
| 2022-04-05 | 2024-04-05 | 2022-04-05 00:00:00.000 | 2022-04-05 02:00:00.000 |
+---------------+---------------------+-------------------------+--------------------------+
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 data for 31 de janeiro, adicionar um mês não deve retornar 31 de fevereiro.
SELECT DATEADD(month, 1, '2023-01-31'::DATE) AS date_plus_one_month;
+---------------------+
| DATE_PLUS_ONE_MONTH |
|---------------------|
| 2023-02-28 |
+---------------------+
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 28 de fevereiro retorna 28 de março.
SELECT DATEADD(month, 1, '2023-02-28'::DATE) AS date_plus_one_month;
+---------------------+
| DATE_PLUS_ONE_MONTH |
|---------------------|
| 2023-03-28 |
+---------------------+