Funzioni e tipi di dati di data e ora (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics

Nelle sezioni di questo argomento vengono tratti tutti i tipi di dati e funzioni di data e ora Transact-SQL.

Tipi di dati di data e ora

I tipi di dati di data e ora Transact-SQL sono elencati nella tabella seguente:

Tipo di dati Formato Intervallo Precisione Dimensioni dello spazio di archiviazione (in byte) Precisione in secondi frazionari definita dall'utente Differenza di fuso orario
time HH:mm:ss[.nnnnnnn] da 00.00.00.0000000 a 23.59.59.9999999 100 nanosecondi da 3 a 5 No
date yyyy-MM-dd Da 01-01-0001 a 31-12-9999 1 giorno 3 No No
smalldatetime Aaaa-MM-gg HH:mm:ss da 01-01-1900 a 06-06-2079 1 minuto 4 No No
datetime Aaaa-MM-gg HH:mm:ss[.nnn] da 01-01-1753 a 31-12-9999 0,00333 secondi 8 No No
datetime2 Aaaa-MM-gg HH:mm:ss[.nnnnnnn] da 01-01-0001 00.00.00.0000000 a 31-12-9999 23.59.59.9999999 100 nanosecondi da 6 a 8 No
datetimeoffset Aaaa-MM-gg HH:mm:ss[.nnnnnnn] [+|-]HH:mm da 0001-01-01 00:00:00.0000000 a 9999-12-31 23:59:59.9999999 (in UTC) 100 nanosecondi Da 8 a 10

Nota

Il tipo di dati Rowversion Transact-SQL non è un tipo di dati data o ora. timestamp è un sinonimo deprecato per rowversion.

Funzioni di data e ora

Nelle seguenti tabelle sono elencate le funzioni di data e ora Transact-SQL. Per altre informazioni sul determinismo, vedere Funzioni deterministiche e non deterministiche.

Funzioni che restituiscono valori di data e ora di sistema

Transact-SQL deriva tutti i valori di data e ora dal sistema operativo del computer in cui è in esecuzione l'istanza di SQL Server.

Funzioni di data e ora di sistema con precisione superiore

A partire da SQL Server 2008 (10.0.x), il motore di database deriva i valori di data e ora tramite l'uso dell'API Windows GetSystemTimeAsFileTime(). L'accuratezza dipende dall'hardware e dalla versione di Windows del computer in cui è in esecuzione l'istanza di SQL Server. Questa API ha una precisione fissata a 100 nanosecondi. Per determinare l'accuratezza, usare l'API Windows GetSystemTimeAdjustment().

Funzione Sintassi Valore restituito Tipo di dati restituito Determinismo
SYSDATETIME SYSDATETIME ( ) Restituisce un valore datetime2(7) contenente la data e l'ora del computer in cui è in esecuzione l'istanza di SQL Server. Il valore restituito non include la differenza di fuso orario. datetime2(7) Non deterministica
SYSDATETIMEOFFSET SYSDATETIMEOFFSET ( ) Restituisce un valore datetimeoffset(7) contenente la data e l'ora del computer in cui è in esecuzione l'istanza di SQL Server. Il valore restituito include la differenza di fuso orario. datetimeoffset(7) Non deterministica
SYSUTCDATETIME SYSUTCDATETIME ( ) Restituisce un valore datetime2(7) contenente la data e l'ora del computer in cui è in esecuzione l'istanza di SQL Server. La funzione restituisce i valori di data e ora in formato ora UTC (Coordinated Universal Time). datetime2(7) Non deterministica

Funzioni di data e ora di sistema con precisione inferiore

Funzione Sintassi Valore restituito Tipo di dati restituito Determinismo
CURRENT_TIMESTAMP CURRENT_TIMESTAMP Restituisce un valore datetime contenente la data e l'ora del computer in cui è in esecuzione l'istanza di SQL Server. Il valore restituito non include la differenza di fuso orario. datetime Non deterministica
GETDATE GETDATE ( ) Restituisce un valore datetime contenente la data e l'ora del computer in cui è in esecuzione l'istanza di SQL Server. Il valore restituito non include la differenza di fuso orario. datetime Non deterministica
GETUTCDATE GETUTCDATE ( ) Restituisce un valore datetime contenente la data e l'ora del computer in cui è in esecuzione l'istanza di SQL Server. La funzione restituisce i valori di data e ora in formato ora UTC (Coordinated Universal Time). datetime Non deterministica
CURRENT_DATE CURRENT_DATE Restituisce un valore di data contenente solo la data del computer in cui viene eseguita l'istanza del motore di database. Il valore restituito non include l'ora e l'offset del fuso orario. date Non deterministica

Funzioni che restituiscono parti di data e ora

Funzione Sintassi Valore restituito Tipo di dati restituito Determinismo
DATE_BUCKET DATE_BUCKET ( datepart, number, date, origin ) Restituisce un valore corrispondente all'inizio di ogni bucket di data e ora dal timestamp definito dal parametro origin o, se quest'ultimo non è specificato, il valore di origine predefinito, ovvero 1900-01-01 00:00:00.000. Il tipo restituito dipende dall'argomento specificato per date. Non deterministica
DATENAME DATENAME ( datepart, date ) Restituisce una stringa di caratteri che rappresenta l'elemento datepart specificato della data indicata. nvarchar Non deterministica
DATEPART DATEPART ( datepart, date ) Restituisce un intero che rappresenta l'elemento datepart specificato dell'elemento date indicato. int Non deterministica
DATETRUNC DATETRUNC ( datepart, date ) Restituisce una data di input troncata a un datepart specificato. Il tipo restituito dipende dall'argomento specificato per date. Non deterministica
DAY DAY ( date ) Restituisce un intero che rappresenta la parte relativa al giorno dell'elemento date specificato. int Deterministico
MONTH MONTH ( date ) Restituisce un intero che rappresenta la parte relativa al mese dell'elemento date specificato. int Deterministico
YEAR YEAR ( date ) Restituisce un intero che rappresenta la parte relativa all'anno dell'elemento date specificato. int Deterministico

Funzioni che restituiscono valori di data e ora dalle relative parti

Funzione Sintassi Valore restituito Tipo di dati restituito Determinismo
DATEFROMPARTS DATEFROMPARTS ( year, month, day ) Restituisce un valore di tipo date per l'anno, il mese e il giorno specificati. date Deterministico
DATETIME2FROMPARTS DATETIME2FROMPARTS ( year, month, day, hour, minute, seconds, fractions, precision) Restituisce un valore datetime2 per la data e l'ora specificate, con la precisione indicata. datetime2(precision) Deterministico
DATETIMEFROMPARTS DATETIMEFROMPARTS ( year, month, day, hour, minute, seconds, milliseconds) Restituisce un valore di tipo datetime per la data e l'ora specificate. datetime Deterministico
DATETIMEOFFSETFROMPARTS DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision) Restituisce un valore datetimeoffset per la data e l'ora specificate, con gli offset e la precisione indicati. datetimeoffset(precision) Deterministico
SMALLDATETIMEFROMPARTS SMALLDATETIMEFROMPARTS ( year, month, day, hour, minute ) Restituisce un valore di tipo smalldatetime per la data e l'ora specificate. smalldatetime Deterministico
TIMEFROMPARTS TIMEFROMPARTS ( hour, minute, seconds, fractions, precision ) Restituisce un valore time per l'ora specificata, con la precisione indicata. time(precision) Deterministico

Funzioni che restituiscono valori di differenza di data e ora

Funzione Sintassi Valore restituito Tipo di dati restituito Determinismo
DATEDIFF DATEDIFF ( datepart, startdate, enddate ) Restituisce il numero di limiti degli elementi datepart di data o ora che si sovrappongono tra due date specificate. int Deterministico
DATEDIFF_BIG DATEDIFF_BIG ( datepart, startdate, enddate ) Restituisce il numero di limiti degli elementi datepart di data o ora che si sovrappongono tra due date specificate. bigint Deterministico

Funzioni che modificano valori di data e ora

Funzione Sintassi Valore restituito Tipo di dati restituito Determinismo
DATEADD DATEADD (datepart, number, date ) Restituisce un nuovo valore datetime aggiungendo un intervallo alla datepart specificata della data specificata. Tipo di dati dell'argomento date Deterministico
EOMONTH EOMONTH ( start_date [ , month_to_add ] ) Restituisce l'ultimo giorno del mese contenente la data specificata, con un offset facoltativo. Il tipo restituito corrisponde al tipo dell'argomento start_date o, in alternativa, al tipo di dati date. Deterministico
SWITCHOFFSET SWITCHOFFSET (DATETIMEOFFSET, time_zone) SWITCHOFFSET modifica la differenza di fuso orario di un valore DATETIMEOFFSET e mantiene il valore UTC. datetimeoffset con la precisione frazionaria di DATETIMEOFFSET Deterministico
TODATETIMEOFFSET TODATETIMEOFFSET (expression, time_zone) TODATETIMEOFFSET trasforma il valore datetime2 in un valore datetimeoffset. TODATETIMEOFFSET interpreta il valore datetime2 come ora locale in base al valore time_zone specificato. datetimeoffset con la precisione frazionaria dell'argomento datetime Deterministico

Funzioni che impostano o restituiscono il formato della sessione

Funzione Sintassi Valore restituito Tipo di dati restituito Determinismo
@@DATEFIRST @@DATEFIRST Restituisce il valore corrente, per la sessione, di SET DATEFIRST. tinyint Non deterministica
SET DATEFIRST SET DATEFIRST { number | @number_var } Imposta il primo giorno della settimana su un numero compreso tra 1 e 7. Non applicabile Non applicabile
SET DATEFORMAT SET DATEFORMAT { format | @format_var } Imposta l'ordine delle datepart (mese/giorno/anno) per l'immissione di dati datetime o smalldatetime. Non applicabile Non applicabile
@@LANGUAGE @@LANGUAGE Restituisce il nome della lingua attualmente in uso. @@LANGUAGE non è una funzione di data o ora. Comunque, l'impostazione della lingua può influire sull'output di funzioni di data. Non applicabile Non applicabile
SET LANGUAGE SET LANGUAGE { [ N ] 'language' | @language_var } Imposta la lingua per la sessione e i messaggi di sistema. SET LANGUAGE non è una funzione di data o ora. Comunque, l'impostazione della lingua influisce sull'output di funzioni di data. Non applicabile Non applicabile
sp_helplanguage sp_helplanguage [ [ @language = ] 'language' ] Restituisce informazioni su formati della data di tutte le lingue supportate. sp_helplanguage non è una stored procedure di data o ora. Comunque, l'impostazione della lingua influisce sull'output di funzioni di data. Non applicabile Non applicabile

Funzioni che convalidano valori di data e ora

Funzione Sintassi Valore restituito Tipo di dati restituito Determinismo
ISDATE ISDATE ( expression ) Determina se un'espressione di input datetime o smalldatetime ha un valore di data o ora valido. int La funzione ISDATE è deterministica solo se viene usata con la funzione CONVERT, se viene specificato il parametro di stile della funzione CONVERT e se lo stile è diverso da 0, 100, 9 o 109.
Articolo Descrizione
FORMAT Restituisce un valore formattato con il formato specificato e impostazioni cultura facoltative. Utilizzare la funzione FORMAT per formattare in base alle impostazioni locali i valori numerici e di data/ora come stringhe.
CAST e CONVERT Offre informazioni sulla conversione di valori data e ora in e da valori letterali stringa e altri formati di data e ora.
Scrittura di istruzioni Transact-SQL internazionali Fornisce linee guida per la portabilità di database e applicazioni database che usano istruzioni Transact-SQL da una lingua a un'altra o che supportano più lingue.
Funzioni scalari ODBC Fornisce informazioni sulle funzioni scalari ODBC disponibili per l'uso all'interno di istruzioni Transact-SQL, Include funzioni di data e ora ODBC.
AT TIME ZONE Offre informazioni sulla conversione del fuso orario.