Programa
A função Snowflake DATEADD
é um método relativamente simples, mas poderoso, de realizar qualquer tipo de aritmética de data, que permite aos profissionais de dados adicionar ou subtrair o intervalo de tempo específico de um valor de data, hora ou carimbo de data/hora.
Saber como usar o site DATEADD
permitirá que os analistas de dados e/ou engenheiros realizem análises úteis calculando períodos de tempo de assinatura, criem projeções para qualquer data futura e até mesmo gerem conjuntos de dados de séries temporais para análise posterior .
Neste tutorial, você aprenderá sobre a sintaxe da função, como ela pode ser aplicada na prática e o potencial geral da função DATEADD
no seu arsenal de manipulação de datas no Snowflake SQL.
Se você está apenas começando a usar o Snowflake, não deixe de conferir nosso programa de habilidades Snowflake Foundations.
Configuração de um banco de dados de amostra para prática
Antes de nos aprofundarmos nos detalhes do site DATEADD
, vamos criar um banco de dados de amostra com dados ricos em datas para tornar nossos exemplos mais práticos e práticos. Trabalhar com dados reais ajudará a reforçar os conceitos à medida que você aprende os recursos da função.
1. Criando uma conta Snowflake (para novos usuários)
Se você for novo no Snowflake, precisará criar uma conta de avaliação gratuita que fornece créditos por 30 dias. Para que você tenha uma introdução abrangente à plataforma, confira este curso de Introdução ao Snowflake, que aborda os conceitos básicos e fundamentais.
2. Configurando sua planilha
No Snowflake, as consultas SQL são executadas em "Planilhas" (semelhantes a notebooks). Para criar uma nova planilha:
- Faça login em sua conta do Snowflake
- Navegue até Worksheets no menu principal
- Clique no botão "+" para criar uma nova planilha
- Dê a ele o nome de "DATEADD_Practice"
Se você é completamente novo na interface do Snowflake, este tutorial do Snowflake para iniciantes fornece um passo a passo útil da plataforma.
3. Escolha de um banco de dados e de um esquema
Para este tutorial, usaremos apenas o banco de dados e o esquema público do Snowflake Learning:
-- Create database and schema
USE DATABASE SNOWFLAKE_LEARNING_DB;
USE SCHEMA PUBLIC;
4. Geração de tabelas e dados sintéticos
Criaremos três tabelas com dados relacionados a datas para que você possa demonstrar o "DATEADD" em vários cenários:
Observação: Use "Command + Shift + Enter"/"Ctrl + Shift + Enter" para executar os seguintes comandos de uma só vez em sua planilha:
-- Create subscription table
CREATE OR REPLACE TABLE subscriptions (
subscription_id INTEGER,
customer_id INTEGER,
plan_name VARCHAR(50),
start_date DATE,
end_date DATE,
billing_cycle VARCHAR(20)
);
-- Create orders table with timestamps
CREATE OR REPLACE TABLE orders (
order_id INTEGER,
customer_id INTEGER,
order_timestamp TIMESTAMP_NTZ,
delivery_estimate TIMESTAMP_NTZ,
total_amount DECIMAL(10,2)
);
-- Create events table with time zones
CREATE OR REPLACE TABLE events (
event_id INTEGER,
event_name VARCHAR(100),
event_timestamp TIMESTAMP_TZ,
duration_minutes INTEGER
);
Para obter mais detalhes sobre a criação de tabelas, incluindo diferentes tipos de tabelas e práticas recomendadas, consulte Criação de tabelas no Snowflake.
Dica: Você deve excluir todas as consultas existentes da planilha depois que elas forem executadas com êxito.
5. Preenchendo tabelas com dados de amostra
Vamos inserir dados de amostra com uma variedade de valores de data e hora:
-- Insert subscription data
INSERT INTO subscriptions VALUES
(1001, 5001, 'Basic', '2023-01-15', '2023-07-15', 'Monthly'),
(1002, 5002, 'Premium', '2023-02-28', '2024-02-28', 'Annual'),
(1003, 5003, 'Premium', '2023-01-31', '2023-04-30', 'Quarterly'),
(1004, 5001, 'Pro', '2022-12-15', '2023-12-15', 'Annual'),
(1005, 5004, 'Basic', '2023-03-15', NULL, 'Monthly');
-- Insert orders with timestamps
INSERT INTO orders VALUES
(10001, 5001, '2023-03-10 08:30:00', '2023-03-12 14:00:00', 125.99),
(10002, 5002, '2023-03-10 12:15:30', '2023-03-11 09:00:00', 89.50),
(10003, 5003, '2023-03-09 17:45:20', '2023-03-15 13:30:00', 245.00),
(10004, 5001, '2023-02-28 23:59:59', '2023-03-05 10:00:00', 49.99),
(10005, 5004, '2023-03-01 00:00:01', '2023-03-02 12:00:00', 175.25);
-- Insert events
INSERT INTO events VALUES
(101, 'System Update', '2023-03-15 01:00:00'::TIMESTAMP_TZ, 120),
(102, 'Maintenance', '2023-03-20 22:00:00'::TIMESTAMP_TZ, 60),
(103, 'Data Migration', '2023-03-18 15:30:00'::TIMESTAMP_TZ, 180),
(104, 'Backup', '2023-03-10 03:00:00'::TIMESTAMP_TZ, 45),
(105, 'Security Audit', '2023-03-12 09:15:00'::TIMESTAMP_TZ, 90);
6. Validação dos dados de amostra
Vamos executar algumas consultas básicas para verificar se nossos dados foram carregados corretamente:
-- Check subscription data
SELECT * FROM subscriptions;
-- Check orders data
SELECT * FROM orders;
-- Check events data
SELECT * FROM events;
Agora você tem um banco de dados de amostra funcional com três tabelas contendo diferentes formatos de data e carimbo de data/hora. Esse conjunto de dados servirá de base para que você explore a função DATEADD
durante o restante deste tutorial.
Entendendo o Snowflake DATEADD: Sintaxe e parâmetros
A função DATEADD
é essencial para operações aritméticas de data no Snowflake. Ele permite que você adicione ou subtraia intervalos de tempo específicos de valores de data, hora ou carimbo de data/hora. Vamos detalhar como essa função funciona, começando com sua sintaxe e parâmetros.
Sintaxe e parâmetros da função
A sintaxe básica da função DATEADD
é a seguinte:
DATEADD(date_part, value, date_or_timestamp_expression)
Vamos examinar cada parâmetro:
-- Basic DATEADD example
SELECT
DATEADD(MONTH, 3, '2023-01-15') AS three_months_later;
Explicação: Essa consulta adiciona 3 meses a 15 de janeiro de 2023. Os parâmetros funcionam da seguinte forma:
date_part (MONTH)
: Especifica a unidade de tempo que está sendo adicionada ou subtraídavalue (3)
: O número de unidades a serem adicionadas (positivo) ou subtraídas (negativo)date_or_timestamp_expression
('2023-01-15'): A data inicial a ser modificada
Saída:
THREE_MONTHS_LATER
-----------------
2023-04-15
Peças de data suportadas
O Snowflake oferece suporte a várias partes de data que podem ser usadas com DATEADD
:
-- Examples of different date parts
SELECT
DATEADD(YEAR, 1, '2023-02-28') AS add_one_year,
DATEADD(QUARTER, 2, '2023-01-31') AS add_two_quarters,
DATEADD(MONTH, 3, '2023-01-31') AS add_three_months,
DATEADD(WEEK, 2, '2023-03-15') AS add_two_weeks,
DATEADD(DAY, 10, '2023-03-21') AS add_ten_days,
DATEADD(HOUR, 12, '2023-03-10 08:30:00') AS add_twelve_hours,
DATEADD(MINUTE, 45, '2023-03-10 08:30:00') AS add_forty_five_minutes,
DATEADD(SECOND, 30, '2023-03-10 08:30:00') AS add_thirty_seconds;
Outras partes de data compatíveis incluem MILLISECOND
, MICROSECOND
, NANOSECOND
e CENTURY
.
Observe que, em anos bissextos e para datas de fim de mês, o Snowflake faz os ajustes apropriados. Por exemplo, adicionar um ano a 28 de fevereiro de 2023 resulta em 29 de fevereiro de 2024 (ano bissexto).
Usando valores negativos para subtração
A função DATEADD
também pode subtrair intervalos de tempo usando valores negativos:
-- Subtracting time intervals with negative values
SELECT
DATEADD(MONTH, -3, '2023-03-15') AS three_months_ago,
DATEADD(DAY, -7, CURRENT_DATE()) AS one_week_ago,
DATEADD(HOUR, -48, CURRENT_TIMESTAMP()) AS two_days_ago_time;
Explicação:
- A primeira expressão subtrai 3 meses de 15 de março de 2023
- A segunda expressão subtrai 7 dias da data de hoje
- A terceira expressão subtrai 48 horas (2 dias) do registro de data e hora atual
Saída:
THREE_MONTHS_AGO ONE_WEEK_AGO TWO_DAYS_AGO_TIME
---------------- ------------ -----------------
2025-02-10 2025-05-03 2025-05-08 07:22:30.183 -0700
Comportamento do tipo de retorno
O tipo de retorno de DATEADD
depende do tipo de expressão de entrada:
- Quando aplicado a um
DATE
, ele retorna umDATE
- Quando aplicado a um
TIMESTAMP
, ele retorna umTIMESTAMP
- Quando aplicado a um
TIME
, ele retorna umTIME
DATEADD
preserva o tipo de dados original de sua entrada. É importante entender esse comportamento porque ele afeta a forma como você pode usar o resultado em operações subsequentes.
Por exemplo, se você adicionar horas a um valor DATE, o resultado ainda será um DATE (o que significa que a parte da hora será truncada), enquanto que adicionar horas a um TIMESTAMP
manterá os componentes de data e hora.
A compreensão desses parâmetros e comportamentos principais da função DATEADD
fornecerá a base para os casos de uso mais avançados que exploraremos nas seções seguintes.
Exemplos práticos de DATEADD e casos de uso
Agora que entendemos a sintaxe e o comportamento do DATEADD
, vamos explorar os aplicativos práticos usando nossos dados de amostra. Nesta seção, demonstraremos como o DATEADD
pode resolver problemas reais de negócios e aprimorar os recursos de análise de dados.
Cálculo das datas de renovação da assinatura
Um requisito comercial comum é determinar quando as assinaturas serão renovadas com base em seu ciclo de faturamento:
-- Calculate subscription renewal dates
SELECT
subscription_id,
customer_id,
plan_name,
start_date,
billing_cycle,
CASE
WHEN billing_cycle = 'Monthly' THEN DATEADD(MONTH, 1, start_date)
WHEN billing_cycle = 'Quarterly' THEN DATEADD(MONTH, 3, start_date)
WHEN billing_cycle = 'Annual' THEN DATEADD(YEAR, 1, start_date)
END AS first_renewal_date
FROM subscriptions;
Explicação: Essa consulta calcula a primeira data de renovação de cada assinatura com base em seu ciclo de faturamento. Usamos o site DATEADD
com diferentes partes de data (MONTH
ou YEAR
) e valores (1, 3 ou 1), dependendo do ciclo de faturamento.
Saída:
Observe como o Snowflake lida corretamente com a transição de 28 de fevereiro para 28 de fevereiro (ano bissexto).
Previsão de janelas de entrega
Vamos usar o DATEADD para calcular as janelas de entrega estimadas para os pedidos:
-- Calculate delivery windows based on order timestamps
SELECT
order_id,
customer_id,
order_timestamp,
delivery_estimate,
DATEADD(HOUR, -12, delivery_estimate) AS delivery_window_start,
delivery_estimate AS delivery_window_end,
DATEDIFF('HOUR', order_timestamp, delivery_estimate) AS estimated_hours_to_delivery
FROM orders
ORDER BY order_id;
Explicação: Essa consulta:
- Cria uma janela de entrega de 12 horas, subtraindo 12 horas do tempo de entrega estimado
- Mostra o início e o fim da janela de entrega
- Calcula o tempo total de entrega estimado em horas
Saída:
Criando uma tabela de dimensão de data
A análise de séries temporais geralmente requer uma tabela de dimensão de data. Vamos criar um usando DATEADD:
-- Generate a date dimension table for analysis
WITH date_dimension AS (
SELECT
DATEADD(DAY, seq4(), '2023-01-01') AS calendar_date
FROM TABLE(GENERATOR(ROWCOUNT => 365))
)
SELECT
calendar_date,
YEAR(calendar_date) AS year,
MONTH(calendar_date) AS month,
MONTHNAME(calendar_date) AS month_name,
DAY(calendar_date) AS day,
DAYOFWEEK(calendar_date) AS day_of_week,
DAYNAME(calendar_date) AS day_name,
CASE
WHEN DAYOFWEEK(calendar_date) IN (0, 6) THEN TRUE
ELSE FALSE
END AS is_weekend,
QUARTER(calendar_date) AS quarter
FROM date_dimension
WHERE calendar_date <= '2023-03-31'
ORDER BY calendar_date
LIMIT 10;
Explicação: Essa consulta:
- Você usa o site
DATEADD
com um gerador de sequência para criar uma série de datas para 2023 - Extrai atributos de data úteis para cada data do calendário
- Filtra para o 1º trimestre de 2023 e mostra os primeiros 10 dias para fins de brevidade
Saída:
As tabelas de dimensão de data melhoram significativamente o desempenho da análise, pois pré-calculam os atributos de data em vez de computá-los repetidamente nas consultas. Eles padronizam a lógica de datas em uma organização, garantindo definições consistentes de trimestres, fins de semana e outros períodos de tempo.
Essa abordagem reduz os erros e torna as análises complexas baseadas no tempo mais acessíveis aos usuários corporativos. As dimensões de data também permitem a filtragem e o agrupamento eficientes por várias hierarquias de tempo, como ano, trimestre, mês e dia.
A função DATEADD
com geração de sequência oferece um método simples para você preencher essas tabelas de dimensões sem a entrada manual de dados.
Essa técnica pode ser ampliada para criar calendários de vários anos ou dimensões de tempo especializadas, como calendários fiscais ou cálculos de dias úteis. As colunas adicionais podem incluir sinalizadores de feriados, números de semanas ou designações personalizadas de períodos comerciais essenciais para a geração de relatórios precisos.
Uma vez criada, essa tabela de dimensão pode se unir a tabelas de fatos para permitir recursos avançados de inteligência de tempo em dashboards e relatórios.
Análise de eventos programados
Vamos usar o site DATEADD
para analisar os próximos eventos de manutenção programada:
-- Find upcoming events and calculate preparation time
SELECT
event_id,
event_name,
event_timestamp,
duration_minutes,
DATEADD(DAY, -3, event_timestamp) AS preparation_start,
DATEADD(MINUTE, duration_minutes, event_timestamp) AS event_end,
DATEDIFF('MINUTE', CURRENT_TIMESTAMP(), event_timestamp) AS minutes_until_event
FROM events
WHERE event_timestamp > CURRENT_TIMESTAMP()
ORDER BY event_timestamp;
Explicação: Essa consulta:
- Localiza eventos futuros (aqueles que estão no futuro)
- Calcula quando a preparação deve começar (3 dias antes do evento)
- Calcula quando o evento terminará com base em sua duração
- Mostra quantos minutos faltam para o início do evento
Como todos os nossos dados de amostra são de 2023, essa consulta normalmente não mostraria resultados em 2025, mas demonstra conceitualmente como analisar eventos programados.
Cálculo dos períodos de faturamento
Para empresas baseadas em assinaturas, é essencial calcular períodos de faturamento precisos:
-- Generate next 6 billing periods for monthly subscriptions
WITH billing_periods AS (
SELECT
subscription_id,
customer_id,
plan_name,
start_date,
seq AS billing_period_number,
DATEADD(MONTH, seq, start_date) AS billing_period_start,
DATEADD(DAY, -1, DATEADD(MONTH, seq + 1, start_date)) AS billing_period_end
FROM subscriptions
CROSS JOIN (SELECT seq4() AS seq FROM TABLE(GENERATOR(ROWCOUNT => 6)))
WHERE billing_cycle = 'Monthly'
)
SELECT
subscription_id,
customer_id,
plan_name,
billing_period_number,
billing_period_start,
billing_period_end,
DATEDIFF('DAY', billing_period_start, billing_period_end) + 1 AS days_in_period
FROM billing_periods
ORDER BY subscription_id, billing_period_number;
Explicação: Essa consulta:
- Gera os próximos 6 períodos de cobrança para assinaturas mensais usando um CROSS JOIN com um gerador de sequência (
seq4()
) - Calcula a data de início adicionando meses com base no número do período usando
DATEADD(MONTH, seq, start_date)
- Calcula a data final como um dia antes do início do próximo período com
DATEADD(DAY, -1, DATEADD(MONTH, seq + 1, start_date))
. Isso garante o tratamento adequado de diferentes durações de meses (28/29/30/31 dias). - Conta o número de dias em cada período de faturamento usando
DATEDIFF('DAY', billing_period_start, billing_period_end) + 1
O +1 é necessário porque DATEDIFF retorna a diferença entre as datas, não incluindo a data final - Filtros para incluir apenas assinaturas mensais com a cláusula WHERE
- Pedidos de resultados por
subscription_id
e período de faturamento para uma apresentação lógica
Saída:
Observe como o site DATEADD
lida corretamente com diferentes durações de meses, garantindo cálculos precisos do período de faturamento.
Esses exemplos demonstram como o site DATEADD
pode ser aplicado para resolver problemas comerciais comuns que envolvem a manipulação de datas. Ao combinar o DATEADD
com outras funções SQL, você pode criar consultas poderosas para análise baseada em tempo e processamento de dados no Snowflake.
Comparando DATEADD com funções Snowflake relacionadas
Vamos examinar agora como afunção DATEADD
se compara a algumas das outras funções do Snowflake.
DATEADD vs DATEDIFF e DATE_TRUNC
Enquanto o DATEADD
adiciona ou subtrai um intervalo de tempo específico a uma data, o DATEDIFF
calcula a diferença entre duas datas em uma unidade especificada. O DATEDIFF
retorna um número inteiro que representa o número de unidades completas entre as datas, o que o torna ideal para calcular durações, como duração de assinaturas ou dias desde a colocação do pedido .
DATE_TRUNC
O recurso de arredondamento de data/hora, por outro lado, remove a precisão de um valor de data/hora definindo as partes menores da data como seus valores padrão, arredondando efetivamente para uma unidade especificada.
-- Comparing the three functions
SELECT
DATEADD(MONTH, 3, '2023-01-15'::DATE) AS added_three_months,
DATEDIFF(DAY, '2023-01-15'::DATE, '2023-04-15'::DATE) AS days_between,
DATE_TRUNC(MONTH, '2023-01-15'::DATE) AS truncated_to_month;
Saída:
Quando usar cada função (critérios de decisão)
Use o site DATEADD
quando você precisar adiantar ou retroceder datas em intervalos de tempo específicos, como no cálculo de datas de renovação futuras, janelas de entrega ou programações de pagamento .
Escolha DATEDIFF
ao medir o tempo decorrido entre duas datas, como calcular idade, duração ou métricas baseadas em tempo para relatórios.
DATE_TRUNC
é mais adequado quando você precisa agrupar dados por períodos de tempo (diários, mensais, trimestrais), padronizar carimbos de data/hora para um nível consistente de precisão ou criar hierarquias baseadas em tempo para análise.
-- Function usage by scenario
SELECT
-- Scenario: Calculate next month's billing date
DATEADD(MONTH, 1, start_date) AS next_billing_date,
-- Scenario: Find how many days the subscription has been active
DATEDIFF(DAY, start_date, CURRENT_DATE()) AS subscription_age_days,
-- Scenario: Group by month for analysis
DATE_TRUNC(MONTH, start_date) AS billing_month
FROM subscriptions
LIMIT 3;
Tratamento de casos extremos e solução de problemas
Se você tiver problemas ao usar a função, aqui estão algumas dicas que podem ajudá-lo a se livrar de problemas.
Ajustes de final de mês e ano bissexto
O Snowflake trata de forma inteligente as datas de fim de mês quando você usa o site DATEADD
. Quando você adiciona meses a uma data de fim de mês, o Snowflake retorna o último dia do mês resultante, independentemente do número de dias. Esse comportamento preserva o conceito de "fim de mês" mesmo quando os meses têm durações diferentes.
-- Month-end handling examples
SELECT
DATEADD(MONTH, 1, '2023-01-31') AS jan_to_feb, -- January 31 + 1 month = February 28
DATEADD(MONTH, 1, '2023-02-28') AS feb_to_mar, -- February 28 + 1 month = March 31
DATEADD(MONTH, 1, '2024-01-31') AS jan_to_feb_leap, -- January 31 + 1 month in leap year = February 29
DATEADD(YEAR, 1, '2023-02-28') AS normal_to_leap; -- February 28, 2023 + 1 year = February 29, 2024
Considerações sobre o fuso horário e o horário de verão
Ao trabalhar com dados de registro de data e hora que incluem fusos horários (TIMESTAMP_TZ
), o DATEADD considera automaticamente as transições do horário de verão. Isso garante que os cálculos permaneçam precisos em todas as mudanças de horário, mas às vezes pode produzir resultados inesperados ao adicionar intervalos específicos em torno dos limites do horário de verão.
-- Time zone handling with DST transition
SELECT
event_timestamp,
DATEADD(HOUR, 24, event_timestamp) AS add_24h,
DATEADD(DAY, 1, event_timestamp) AS add_1d
FROM (
SELECT CONVERT_TIMEZONE('America/Los_Angeles', '2023-03-12 01:30:00')::TIMESTAMP_TZ AS event_timestamp
); -- During spring forward DST transition
Ao trabalhar com carimbos de data/hora em transições de horário de verão, você deve estar ciente de que adicionar 24 horas pode não ser igual a adicionar 1 dia. A abordagem "add_1d" geralmente produz resultados mais intuitivos em aplicativos comerciais.
Erros comuns e suas soluções
Normalmente, os erros de DATEADD decorrem de incompatibilidades de tipos ou entradas inválidas. Aqui estão os problemas e as soluções mais comuns:
-- Common error: Invalid date part
-- Error: "Invalid date part 'DATE'"
SELECT DATEADD(DATE, 1, '2023-01-15'); -- Incorrect: 'DATE' is not a valid date part
SELECT DATEADD(DAY, 1, '2023-01-15'); -- Correct: use 'DAY' instead
-- Common error: Type mismatch
-- Error: "Numeric value 'abc' is not recognized"
SELECT DATEADD(DAY, 'abc', '2023-01-15'); -- Incorrect: second parameter must be numeric
SELECT DATEADD(DAY, 10, '2023-01-15'); -- Correct: use numeric value
-- Common error: Invalid date format
-- Error: "Date 'January 15, 2023' is not recognized"
SELECT DATEADD(DAY, 1, 'January 15, 2023'); -- Incorrect: unrecognized date format
SELECT DATEADD(DAY, 1, '2023-01-15'); -- Correct: use YYYY-MM-DD format
Dicas de otimização de desempenho
Para obter o melhor desempenho ao usar o site DATEADD
em operações de larga escala, você deve ter um sistema de gerenciamento de dados que permita a você usar o site em operações de larga escala:
- Aplique o
DATEADD
em estágios de transformação em vez de filtragem, quando possível. - Pré-computar cálculos de datas comuns em tabelas temporárias ou CTEs quando usados várias vezes.
- Considere o uso de DATE_TRUNC antes de
DATEADD
para cálculos baseados em intervalos para melhorar o uso do índice. - Para operações em lote, como a geração de intervalos de datas, use geradores de sequência (como mostrado no exemplo de dimensão de data) em vez de CTEs recursivos.
-- Inefficient pattern (calculating same value repeatedly)
SELECT *
FROM large_table
WHERE DATEADD(MONTH, 1, event_date) < CURRENT_DATE();
-- More efficient approach (calculate once)
WITH calc_dates AS (
SELECT *, DATEADD(MONTH, 1, event_date) AS next_month_date
FROM large_table
)
SELECT *
FROM calc_dates
WHERE next_month_date < CURRENT_DATE();
A compreensão desses casos extremos e das técnicas de otimização ajudará você a escrever uma lógica de manipulação de datas mais robusta no Snowflake, evitando armadilhas comuns e maximizando o desempenho.
Conclusão
A função Snowflake DATEADD
é uma ferramenta essencial para a manipulação de datas que permite que os profissionais de dados realizem aritmética de tempo em várias partes da data. Ele lida com datas de fim de mês, anos bissextos, fusos horários e transições de horário de verão com comportamento previsível. Vimos como o DATEADD
pode ser aplicado ao gerenciamento de assinaturas, rastreamento de entregas, criação de dimensões de datas e cálculos de faturamento. Quando usado junto com DATEDIFF
e DATE_TRUNC
, ele se torna um componente essencial para a análise baseada em tempo no Snowflake.
Para obter mais conhecimento sobre o Snowflake, confira a trilha de habilidades Snowflake Foundations ou explore Creating Tables in Snowflake para desenvolver suas habilidades de modelagem de dados. O guia Using Snowflake Time Travel complementa a compreensão que você tem das operações temporais. Você deve começar com o Snowflake Tutorial for Beginners (Tutorial de floco de neve para iniciantes).
Perguntas frequentes sobre o Snowflake DATEADD
Para que é usada a função DATEADD do Snowflake?
A função Snowflake DATEADD
é usada para realizar operações aritméticas de data, adicionando ou subtraindo intervalos de tempo específicos (como dias, meses ou anos) de valores de data, hora ou carimbo de data/hora. É comumente usado para calcular datas futuras, renovações de assinaturas e análise de séries temporais.
Como o DATEADD lida com datas de fim de mês e anos bissextos?
DATEADD
trata de forma inteligente as datas de fim de mês, preservando o conceito de "fim de mês". Quando você adiciona meses a uma data de fim de mês, ele retorna o último dia do mês resultante. Para anos bissextos, ele ajusta automaticamente as datas de acordo (por exemplo, adicionar um ano a 28 de fevereiro de 2023 resulta em 29 de fevereiro de 2024).
Quais são as partes de data compatíveis com DATEADD?
DATEADD
Você tem suporte para várias peças de data, incluindo YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND, NANOSECOND, and CENTURY
. Cada parte da data permite que você adicione ou subtraia essa unidade de tempo específica de um valor de data.
O DATEADD pode ser usado com diferentes tipos de carimbo de data/hora?
Sim, o site DATEADD
funciona com todos os tipos de registro de data e hora do Snowflake: TIMESTAMP_NTZ
(Sem fuso horário), TIMESTAMP_TZ
(Com fuso horário) e TIMESTAMP_LTZ
(Fuso horário local). Ele preserva o tipo de carimbo de data/hora e lida automaticamente com as conversões de fuso horário.
Como DATEADD difere de DATEDIFF e DATE_TRUNC?
Enquanto o DATEADD
modifica as datas adicionando ou subtraindo intervalos de tempo, o DATEDIFF
calcula a diferença entre duas datas em uma unidade especificada e o DATE_TRUNC
remove a precisão de um valor de data/hora arredondando para uma unidade especificada. Eles servem a propósitos diferentes, mas complementares, na manipulação de datas.

Sou um criador de conteúdo de ciência de dados com mais de 2 anos de experiência e um dos maiores seguidores no Medium. Gosto de escrever artigos detalhados sobre IA e ML com um estilo um pouco sarcástico, porque você precisa fazer algo para torná-los um pouco menos monótonos. Produzi mais de 130 artigos e um curso DataCamp, e estou preparando outro. Meu conteúdo foi visto por mais de 5 milhões de pessoas, das quais 20 mil se tornaram seguidores no Medium e no LinkedIn.