Vai al contenuto principale

Snowflake DATEADD: guida completa con esempi pratici

Impara a usare la funzione DATEADD di Snowflake per manipolare le date con esempi reali. Padroneggia i calcoli temporali, gestisci i casi limite e ottimizza le performance nelle tue query SQL.
· 10 min leggi

Scopri con l'IA

La funzione DATEADD di Snowflake è un metodo relativamente semplice ma potente per eseguire qualsiasi tipo di aritmetica sulle date: permette ai professionisti dei dati di aggiungere o sottrarre un intervallo di tempo specifico da un valore di data, ora o timestamp. 

Capire come usare DATEADD ti consentirà, come data analyst e/o ingegnere, di eseguire analisi utili calcolando periodi di abbonamento, costruendo proiezioni per qualsiasi data futura e persino generando dataset di serie temporali per ulteriori analisi. 

In questo tutorial imparerai la sintassi della funzione, come applicarla nella pratica e il potenziale complessivo di DATEADD nel tuo arsenale di manipolazione delle date in Snowflake SQL.

Se stai iniziando ora con Snowflake, dai un'occhiata al nostro percorso di competenze Snowflake Foundations. 

Configurare un database di esempio per fare pratica

Prima di entrare nei dettagli di DATEADD, creiamo un database di esempio ricco di date per rendere i nostri esempi più pratici e hands-on. Lavorare con dati reali aiuterà a fissare i concetti mentre impariamo le capacità della funzione.

1. Creare un account Snowflake (per nuovi utenti)

Se sei nuovo su Snowflake, devi creare un account di prova gratuito che fornisce crediti per 30 giorni. Per un'introduzione completa alla piattaforma, consulta il corso Introduction to Snowflake, che copre le basi e i fondamenti.

2. Impostare il tuo worksheet

In Snowflake, le query SQL vengono eseguite nei “Worksheets” (simili ai notebook). Per creare un nuovo worksheet:

  1. Accedi al tuo account Snowflake
  2. Dal menu principale vai su Worksheets
  3. Clicca sul pulsante “+” per creare un nuovo worksheet
  4. Assegnagli il nome “DATEADD_Practice”

Se sei completamente alle prime armi con l'interfaccia di Snowflake, questo Snowflake Tutorial For Beginners offre una guida utile alla piattaforma.

3. Scegliere un database e uno schema

Per questo tutorial useremo il database Snowflake Learning e lo schema public:

-- Create database and schema
USE DATABASE SNOWFLAKE_LEARNING_DB;
USE SCHEMA PUBLIC;

4. Generare dati sintetici e tabelle

Creeremo tre tabelle con dati relativi alle date per dimostrare ‘DATEADD’ in vari scenari:

Nota: Usa “Command + Shift + Enter”/”Ctrl + Shift + Enter” per eseguire tutti i seguenti comandi in una volta nel tuo worksheet:

-- 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
);

Per maggiori dettagli sulla creazione delle tabelle, inclusi diversi tipi di tabelle e best practice, fai riferimento a Creating Tables in Snowflake.

Suggerimento: Dopo l'esecuzione corretta, elimina tutte le query esistenti dal tuo worksheet.

5. Popolare le tabelle con dati di esempio

Inseriamo dati di esempio con una varietà di valori di data e ora:

-- 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. Convalidare i dati di esempio

Eseguiamo alcune query di base per verificare che i dati siano stati caricati correttamente:

-- Check subscription data
SELECT * FROM subscriptions;

-- Check orders data
SELECT * FROM orders;

-- Check events data
SELECT * FROM events;

Ora abbiamo un database di esempio funzionante con tre tabelle che contengono diversi formati di date e timestamp. Questo dataset sarà la base per esplorare la funzione DATEADD nel resto del tutorial.

Capire Snowflake DATEADD: sintassi e parametri

La funzione DATEADD è fondamentale per le operazioni di aritmetica sulle date in Snowflake. Ti consente di aggiungere o sottrarre intervalli di tempo specifici da valori di data, ora o timestamp. Vediamo come funziona, partendo da sintassi e parametri.

Sintassi e parametri della funzione

La sintassi di base di DATEADD è:

DATEADD(date_part, value, date_or_timestamp_expression)

Esaminiamo ciascun parametro:

-- Basic DATEADD example
SELECT
   DATEADD(MONTH, 3, '2023-01-15') AS three_months_later;

Spiegazione: questa query aggiunge 3 mesi al 15 gennaio 2023. I parametri funzionano così:

  • date_part (MONTH): specifica l'unità di tempo che stiamo aggiungendo o sottraendo
  • value (3): il numero di unità da aggiungere (positivo) o sottrarre (negativo)
  • date_or_timestamp_expression ('2023-01-15'): la data di partenza da modificare

Output:

THREE_MONTHS_LATER

-----------------

2023-04-15

Parti di data supportate

Snowflake supporta diverse parti di data utilizzabili con 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;

Ulteriori parti di data supportate includono MILLISECOND, MICROSECOND, NANOSECOND e CENTURY.

Nota che negli anni bisestili e per le date a fine mese Snowflake applica gli adeguati aggiustamenti. Ad esempio, aggiungere un anno al 28 febbraio 2023 restituisce il 29 febbraio 2024 (anno bisestile).

Usare valori negativi per la sottrazione

La funzione DATEADD può anche sottrarre intervalli di tempo usando valori negativi:

-- 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;

Spiegazione:

  • La prima espressione sottrae 3 mesi dal 15 marzo 2023
  • La seconda espressione sottrae 7 giorni dalla data di oggi
  • La terza espressione sottrae 48 ore (2 giorni) dal timestamp corrente

Output:

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 del tipo di ritorno

Il tipo di ritorno di DATEADD dipende dal tipo di espressione in input:

  • Applicata a un DATE, restituisce un DATE
  • Applicata a un TIMESTAMP, restituisce un TIMESTAMP
  • Applicata a un TIME, restituisce un TIME

DATEADD preserva il tipo di dato originale dell'input. Questo comportamento è importante perché influenza come potrai usare il risultato nelle operazioni successive. 

Ad esempio, se aggiungi ore a un valore DATE, il risultato sarà ancora un DATE (quindi la parte oraria viene troncata), mentre aggiungendo ore a un TIMESTAMP manterrai sia la data che l'ora.

Comprendere questi parametri e comportamenti di base di DATEADD ti darà le fondamenta per i casi d'uso più avanzati che esploreremo nelle sezioni successive.

Esempi pratici di DATEADD e casi d'uso

Ora che abbiamo compreso sintassi e comportamento di DATEADD, esploriamo applicazioni pratiche usando i nostri dati di esempio. In questa sezione mostreremo come DATEADD può risolvere problemi di business reali e potenziare le capacità di analisi dei dati.

Calcolare le date di rinnovo degli abbonamenti

Un'esigenza comune è determinare quando gli abbonamenti si rinnoveranno in base al ciclo di fatturazione:

-- 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;

Spiegazione: questa query calcola la prima data di rinnovo per ogni abbonamento in base al ciclo di fatturazione. Usiamo DATEADD con diverse parti di data (MONTH o YEAR) e valori (1, 3 o 1) a seconda del ciclo.

Output:

Il risultato di una query Snowflake che usa la funzione dateadd

Nota come Snowflake gestisce correttamente la transizione dal 28 febbraio al 28 febbraio (anno bisestile).

Prevedere le finestre di consegna

Usiamo DATEADD per calcolare finestre di consegna stimate per gli ordini:

-- 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;

Spiegazione: questa query:

  1. Crea una finestra di consegna di 12 ore sottraendo 12 ore dal tempo di consegna stimato
  2. Mostra sia l'inizio che la fine della finestra di consegna
  3. Calcola il tempo totale stimato alla consegna in ore

Output:

Il risultato di una query Snowflake che usa la funzione dateadd

Creare una tabella dimensione date

L'analisi di serie temporali richiede spesso una tabella dimensione date. Creiamone una 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;

Spiegazione: questa query:

  1. Usa DATEADD con un generatore di sequenze per creare una serie di date per il 2023
  2. Estrae attributi di data utili per ogni data di calendario
  3. Filtra al Q1 2023 e mostra i primi 10 giorni per brevità

Output:

Il risultato di una query Snowflake che usa la funzione dateadd

Le tabelle dimensione date migliorano notevolmente le performance analitiche pre-calcolando attributi di data invece di computarli ripetutamente nelle query. Standardizzano la logica sulle date in tutta l'organizzazione, garantendo definizioni coerenti di trimestri, weekend e altri periodi di tempo. 

Questo approccio riduce gli errori e rende più accessibili analisi complesse basate sul tempo per gli utenti di business. Le dimensioni date consentono anche filtri e raggruppamenti efficienti per varie gerarchie temporali come anno, trimestre, mese e giorno.

La funzione DATEADD con generazione di sequenze offre un metodo semplice per popolare queste tabelle di dimensione senza inserimenti manuali. 

Questa tecnica può essere estesa per creare calendari multi-annuali o dimensioni temporali specializzate come calendari fiscali o calcoli dei giorni lavorativi. Colonne aggiuntive potrebbero includere flag per festività, numeri di settimana o periodi business personalizzati, fondamentali per report accurati. 

Una volta creata, questa tabella dimensione può essere unita a tabelle dei fatti per abilitare potenti capacità di time intelligence in dashboard e report.

Analizzare eventi pianificati

Usiamo DATEADD per analizzare prossimi interventi di manutenzione pianificati:

-- 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;

Spiegazione: questa query:

  1. Trova gli eventi in arrivo (quelli nel futuro)
  2. Calcola quando iniziare la preparazione (3 giorni prima dell'evento)
  3. Calcola quando finirà l'evento in base alla sua durata
  4. Mostra quanti minuti mancano all'inizio dell'evento

Poiché tutti i nostri dati di esempio sono del 2023, questa query in genere non mostrerà risultati nel 2025, ma dimostra concettualmente come analizzare eventi pianificati.

Calcolare i periodi di fatturazione

Per le aziende in abbonamento, calcolare periodi di fatturazione precisi è essenziale:

-- 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;

Spiegazione: questa query:

  1. Genera i prossimi 6 periodi di fatturazione per gli abbonamenti mensili usando un CROSS JOIN con un generatore di sequenze (seq4())
  2. Calcola la data di inizio aggiungendo mesi in base al numero del periodo con DATEADD(MONTH, seq, start_date)
  3. Calcola la data di fine come un giorno prima dell'inizio del periodo successivo con DATEADD(DAY, -1, DATEADD(MONTH, seq + 1, start_date)) Questo garantisce una corretta gestione delle diverse lunghezze dei mesi (28/29/30/31 giorni)
  4. Conta i giorni in ciascun periodo con DATEDIFF('DAY', billing_period_start, billing_period_end) + 1 Il +1 è necessario perché DATEDIFF restituisce la differenza tra le date, senza includere la data finale
  5. Filtra per includere solo gli abbonamenti mensili con la clausola WHERE
  6. Ordina i risultati per subscription_id e numero di periodo per una presentazione logica

Output:

Il risultato di una query Snowflake che usa la funzione dateadd

Nota come DATEADD gestisce correttamente le diverse lunghezze dei mesi, garantendo calcoli accurati dei periodi di fatturazione.

Questi esempi mostrano come DATEADD possa essere applicata per risolvere problemi comuni di business che coinvolgono la manipolazione delle date. Combinando DATEADD con altre funzioni SQL, puoi creare query potenti per analisi e processi basati sul tempo in Snowflake.

Confrontare DATEADD con funzioni correlate di Snowflake

Vediamo ora come la funzione DATEADD si confronta con altre funzioni di Snowflake. 

DATEADD vs DATEDIFF e DATE_TRUNC

Mentre DATEADD aggiunge o sottrae un intervallo di tempo specifico a una data, DATEDIFF calcola la differenza tra due date in un'unità specificata. DATEDIFF restituisce un intero che rappresenta il numero di unità complete tra le date, rendendola ideale per calcolare durate come la lunghezza degli abbonamenti o i giorni trascorsi dall'inoltro di un ordine. 

DATE_TRUNC, al contrario, rimuove precisione da un valore di data/ora impostando le parti più piccole ai valori predefiniti, arrotondando di fatto verso il basso a un'unità specificata.

-- 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;

Output:

Il risultato di una query Snowflake che usa la funzione dateadd

Quando usare ciascuna funzione (criteri decisionali)

Usa DATEADD quando devi spostare date avanti o indietro di intervalli specifici, ad esempio calcolare date di rinnovo future, finestre di consegna o scadenze di pagamento. 

Scegli DATEDIFF quando misuri il tempo trascorso tra due date, come calcolare età, durata o metriche basate sul tempo per la reportistica.

 DATE_TRUNC è più adatta quando devi raggruppare dati per periodi (giornalieri, mensili, trimestrali), standardizzare i timestamp a un livello di precisione coerente o creare gerarchie temporali per l'analisi.

-- 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;

Il risultato di una query Snowflake che usa la funzione dateadd

Gestione dei casi limite e troubleshooting

Se riscontri problemi nell'uso della funzione, ecco alcuni suggerimenti che possono aiutarti a uscirne. 

Adeguamenti di fine mese e anni bisestili

Snowflake gestisce in modo intelligente le date di fine mese quando si usa DATEADD. Quando aggiungi mesi a una data a fine mese, Snowflake restituisce l'ultimo giorno del mese risultante, indipendentemente dal numero di giorni. Questo comportamento preserva il concetto di "fine mese" anche quando i mesi hanno lunghezze diverse.

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

Fusi orari e considerazioni sull'ora legale

Quando lavori con dati timestamp che includono fusi orari (TIMESTAMP_TZ), DATEADD tiene automaticamente conto delle transizioni dell'ora legale. Ciò assicura calcoli accurati durante i cambi d'ora, ma può a volte produrre risultati inattesi quando si aggiungono intervalli specifici attorno ai confini dell'ora legale.

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

Quando lavori con timestamp attorno alle transizioni dell'ora legale, sappi che aggiungere 24 ore potrebbe non equivalere ad aggiungere 1 giorno. L'approccio “add_1d" in genere produce risultati più intuitivi nelle applicazioni business.

Errori comuni e soluzioni

Gli errori di DATEADD derivano tipicamente da incongruenze di tipo o input non validi. Ecco problemi comuni e soluzioni:

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

Suggerimenti per l'ottimizzazione delle performance

Per le migliori performance quando usi DATEADD in operazioni su larga scala:

  1. Applica DATEADD nelle fasi di trasformazione piuttosto che di filtro quando possibile.
  2. Pre-calcola calcoli di data comuni in tabelle temporanee o CTE quando usati più volte.
  3. Considera l'uso di DATE_TRUNC prima di DATEADD per calcoli basati su range per migliorare l'uso degli indici.
  4. Per operazioni batch come generare intervalli di date, usa generatori di sequenze (come mostrato nell'esempio della dimensione date) anziché CTE ricorsive.
-- 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();

Comprendere questi casi limite e le tecniche di ottimizzazione ti aiuterà a scrivere logiche di manipolazione delle date più robuste in Snowflake, evitando trappole comuni e massimizzando le performance.

Conclusione

La funzione DATEADD di Snowflake è uno strumento essenziale per la manipolazione delle date che consente ai professionisti dei dati di eseguire aritmetica temporale su varie parti di data. Gestisce date di fine mese, anni bisestili, fusi orari e transizioni dell'ora legale con un comportamento prevedibile. Abbiamo visto come DATEADD si applichi alla gestione degli abbonamenti, al tracciamento delle consegne, alla creazione di dimensioni date e ai calcoli di fatturazione. Usata insieme a DATEDIFF e DATE_TRUNC, diventa un componente chiave per le analisi basate sul tempo in Snowflake.

Per approfondire Snowflake, dai un'occhiata al Snowflake Foundations skill track o esplora Creating Tables in Snowflake per sviluppare le tue competenze di data modeling. La guida Using Snowflake Time Travel completa la tua comprensione delle operazioni temporali. I principianti possono iniziare con lo Snowflake Tutorial for Beginners.

Snowflake DATEADD - Domande frequenti

A cosa serve la funzione DATEADD di Snowflake?

La funzione DATEADD di Snowflake viene usata per eseguire operazioni di aritmetica sulle date aggiungendo o sottraendo intervalli di tempo specifici (come giorni, mesi o anni) da valori di data, ora o timestamp. È comunemente usata per calcolare date future, rinnovi di abbonamenti e analisi di serie temporali.

Come gestisce DATEADD le date di fine mese e gli anni bisestili?

DATEADD gestisce in modo intelligente le date di fine mese preservando il concetto di "fine mese". Quando aggiungi mesi a una data a fine mese, restituisce l'ultimo giorno del mese risultante. Per gli anni bisestili, regola automaticamente le date di conseguenza (ad es., aggiungendo un anno al 28 febbraio 2023, si ottiene il 29 febbraio 2024).

Quali sono le parti di data supportate in DATEADD?

DATEADD supporta varie parti di data tra cui YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND, MICROSECOND, NANOSECOND e CENTURY. Ogni parte consente di aggiungere o sottrarre quella specifica unità di tempo da un valore di data.

Si può usare DATEADD con diversi tipi di timestamp?

Sì, DATEADD funziona con tutti i tipi di timestamp di Snowflake: TIMESTAMP_NTZ (senza fuso orario), TIMESTAMP_TZ (con fuso orario) e TIMESTAMP_LTZ (fuso orario locale). Preserva il tipo di timestamp e gestisce automaticamente le conversioni di fuso orario.

In cosa differisce DATEADD da DATEDIFF e DATE_TRUNC?

Mentre DATEADD modifica le date aggiungendo o sottraendo intervalli di tempo, DATEDIFF calcola la differenza tra due date in un'unità specificata e DATE_TRUNC rimuove precisione da un valore di data/ora arrotondando verso il basso a un'unità specificata. Servono a scopi diversi ma complementari nella manipolazione delle date.

Bexruz (Bex) Tuychiev

Autore

Bexruz (Bex) Tuychiev

Sono un creator di contenuti sulla data science con oltre 2 anni di esperienza e uno dei più seguiti su Medium. Mi piace scrivere articoli dettagliati su AI e ML con un pizzico di sarcasmo, perché bisogna pur fare qualcosa per renderli un po’ meno noiosi. Ho pubblicato oltre 130 articoli e un corso su DataCamp, con un altro in arrivo. I miei contenuti sono stati visti da oltre 5 milioni di persone, 20.000 delle quali sono diventate follower sia su Medium che su LinkedIn. 

Argomenti

Correlato