Formati Datetime di SQL Server: Una Guida Completa

Introduzione
Lavorare con valori di data e ora è una parte routinaria dello sviluppo di database. Che Lei stia filtrando righe, creando report o presentando timestamp, una formattazione coerente aiuta a garantire chiarezza. Questo articolo spiega come formattare e manipolare le date in SQL Server utilizzando strumenti e funzioni integrate.
Comprendere come utilizzare le funzioni datetime di SQL Server migliora l’accuratezza dei report, garantisce una corretta formattazione regionale e semplifica la logica applicativa a valle. Nelle sezioni seguenti, esploreremo i tipi di dati fondamentali, le opzioni di formattazione e le best practices per il datetime in SQL Server.
Panoramica sulla Conformità dei Dati | Quadri Regolamentari
Gestione dei Fusi Orari e Cheat Sheet per Codici di Stile Rapidi
Conversione Istantanea con AT TIME ZONE
A partire da SQL Server 2016, AT TIME ZONE semplifica la conversione dei timestamp UTC in orari locali (e viceversa) senza dover codificare manualmente gli offset o gestire le modifiche dovute all’ora legale.
-- Memorizza in UTC una sola volta, presenta il risultato in orario locale
DECLARE @utc DATETIME2 = SYSUTCDATETIME();
SELECT
@utc AS StoredUTC,
@utc AT TIME ZONE 'UTC'
AT TIME ZONE 'Central European Standard Time' AS BerlinTime,
@utc AT TIME ZONE 'UTC'
AT TIME ZONE 'Pacific Standard Time' AS SeattleTime;
I codici di Stile CONVERT più Utilizzati
| Stile | Esempio di Output | Uso Tipico |
|---|---|---|
| 101 | 07/15/2025 | US MM/DD/YYYY |
| 103 | 15/07/2025 | EU DD/MM/YYYY |
| 104 | 15.07.2025 | DE DD.MM.YYYY |
| 120 | 2025-07-15 13:25:42 | ISO 24-hour |
| 121 | 2025-07-15 13:25:42.347 | ISO ms precision |
Attenga agli stili ISO (120/121) per le API, riservi i formati specifici alla presentazione e memorizzi sempre in UTC quando le righe viaggiano tra regioni.
Che Cos’è SQL Server?
Microsoft SQL Server è una piattaforma di database relazionale utilizzata ampiamente negli ambienti enterprise. Supporta carichi di lavoro transazionali e analitici, offrendo robuste capacità per la gestione dei dati strutturati — compresi strumenti integrati per l’archiviazione, la formattazione e le operazioni aritmetiche sui datetime.
Tipi di Dati per Data e Ora in SQL Server
SQL Server offre diversi tipi integrati per memorizzare e lavorare con i valori datetime. Alcuni sono compatibili con le versioni legacy, mentre altri offrono precisione moderna e supporto per i fusi orari. La scelta del tipo giusto dipende dal livello di accuratezza e dall’efficienza di archiviazione richiesti.
| Tipo | Categoria | Casi d’Uso |
|---|---|---|
| datetime | Legacy | Memorizzazione generale con precisione al millisecondo |
| smalldatetime | Legacy | Memorizzazione compatta, accurata al minuto |
| date | Moderno | Memorizza solo la data (senza componente temporale) |
| time | Moderno | Memorizza solo il tempo, ideale per la pianificazione |
| datetime2 | Moderno | Data e ora ad alta precisione con intervallo più ampio |
| datetimeoffset | Moderno | Include la consapevolezza del fuso orario |
Formato di Output Predefinito
Per impostazione predefinita, una query come SELECT GETDATE(); restituisce un risultato nel formato 'YYYY-MM-DD HH:MI:SS.mmm'. Ad esempio:
2024-07-15 13:25:42.347
Per personalizzare il formato, utilizzi le funzioni CONVERT() o FORMAT() con i codici di stile.
Formattare le Date in SQL Server
Trasformare i valori datetime in stringhe leggibili è essenziale per report o output nelle interfacce utente. La funzione CONVERT() accetta codici di stile per vari formati specifici per regione.
DECLARE @date DATETIME = GETDATE();
SELECT
CONVERT(VARCHAR, @date, 101) AS US_Format, -- MM/DD/YYYY
CONVERT(VARCHAR, @date, 103) AS UK_Format, -- DD/MM/YYYY
CONVERT(VARCHAR, @date, 120) AS ISO_Format; -- YYYY-MM-DD HH:MI:SS
Lavorare con Stringhe e Date
Quando l’input viene ricevuto come stringa, è possibile convertirlo utilizzando le funzioni CONVERT() o CAST(). Questo facilita l’integrazione nelle pipeline e l’utilizzo di SQL dinamico.
DECLARE @str VARCHAR(20) = '2024-07-12 14:30:00';
SELECT CONVERT(DATETIME, @str) AS ConvertedDate;
Ogni volta che la precisione è importante, utilizzi datetime2 o datetimeoffset per un intervallo esteso e funzionalità relative al fuso orario.
Aritmetica delle Date
Aggiungere o sottrarre intervalli di tempo può essere gestito utilizzando DATEADD(). Questo rende semplice calcolare date di scadenza, orari di consegna o finestre per i report.
DECLARE @start DATETIME = '2024-07-12';
SELECT
DATEADD(DAY, 5, @start) AS PlusFiveDays,
DATEADD(MONTH, 1, @start) AS NextMonth;
Estrazione di Parti della Data
Ha bisogno di estrarre una parte specifica di una data? SQL Server offre funzioni dirette per ottenere anno, mese, giorno e giorno della settimana.
SELECT
YEAR(GETDATE()) AS Year,
MONTH(GETDATE()) AS Month,
DAY(GETDATE()) AS Day,
DATEPART(WEEKDAY, GETDATE()) AS Weekday;
Migliori Pratiche per il Datetime in SQL Server
- Utilizzi il tipo di datetime più piccolo che soddisfi le Sue esigenze. Ad esempio, usi
datese il tempo non è rilevante. - Attenga alle stringhe formattate in ISO quando importa/esporta per evitare ambiguità.
- Si riferisca ai codici stile Microsoft ufficiali per garantire coerenza nella formattazione.
- Presti attenzione alle impostazioni di locale e lingua del server: esse possono alterare il parsing dell’input e l’ordine giorno-mese.
Gestione dei Fusi Orari
La consapevolezza dei fusi orari è fondamentale per le applicazioni globali. Il tipo datetimeoffset di SQL Server aiuta a garantire coerenza memorizzando valori UTC e convertendoli nei fusi orari locali.
DECLARE @utc DATETIMEOFFSET = '2024-07-12 12:00:00 +00:00';
DECLARE @cet DATETIMEOFFSET = '2024-07-12 14:00:00 +02:00';
SELECT DATEDIFF(HOUR, @utc, @cet) AS HourDifference;
Riepilogo e Conclusioni
Gestire e formattare i valori datetime in SQL Server non deve essere complicato. Conoscendo i tipi di dati appropriati e applicando strategicamente le funzioni di conversione, Lei può garantire che le applicazioni presentino informazioni temporali in maniera chiara e coerente.
Che Lei stia realizzando report, elaborando stringhe o implementando logiche aziendali sensibili al tempo, padroneggiare il datetime in SQL Server Le offre un controllo preciso sui dati temporali. Utilizzi le funzioni integrate, segua gli standard di formattazione in linea con le specifiche e sfrutti il supporto per i fusi orari per ridurre errori e accrescere la fiducia degli utenti.