date (Transact-SQL)

Definisce una data.

Per una panoramica di tutti i tipi di dati e delle funzioni di data e ora Transact-SQL, vedere Funzioni e tipi di dati di data e ora (Transact-SQL). Per informazioni ed esempi comuni ai tipi di dati e alle funzioni di data e ora, vedere Utilizzo di dati relativi a data e ora.

Descrizione di date

Proprietà

Valore

Sintassi

date

Utilizzo

DECLARE @MyDate date

CREATE TABLE Table1 ( Column1 date )

Formato predefinito dei valori letterali stringa

(utilizzato per client legacy)

AAAA-MM-GG

Per ulteriori informazioni, vedere la sezione relativa alla compatibilità con le versioni precedenti per i client legacy nell'argomento Utilizzo di dati relativi a data e ora.

Intervallo

Da 0001-01-01 a 9999-12-31

dal 1 gennaio 1 d.C. al 31 dicembre 9999 d.C.

Intervalli di elementi

AAAA rappresenta un numero di quattro cifre compreso tra 0001 e 9999 indicante l'anno.

MM rappresenta un numero di due cifre compreso tra 01 e 12 indicante un mese dell'anno specificato.

GG rappresenta un numero di due cifre compreso tra 01 e 31, a seconda del mese, indicante il giorno del mese specificato.

Lunghezza in caratteri

10 posizioni

Precisione, scala

10, 0

Dimensioni dello spazio di archiviazione

3 byte, fissa

Struttura di archiviazione

Valore integer di 1, 3 byte archivia la data.

Accuratezza

Un giorno

Valore predefinito

1900-01-01

Questo valore è utilizzato per la parte relativa alla data aggiunta per la conversione implicita da time a datetime2 o datetimeoffset.

Calendario

Gregoriano

Precisione in secondi frazionari definita dall'utente

No

Considerazione e conservazione delle differenze di fuso orario

No

Considerazione dell'ora legale

No

Formati di valore letterale stringa supportati per date

Nelle tabelle seguenti sono illustrati i formati di valore letterale stringa supportati per il tipo di dati date.

Espressione numerica

Descrizione

mga                         

[m]m/gg/[aa]aa       

[m]m-gg-[aa]aa       

[m]m.gg.[aa]aa       

mag                         

mm/[aa]aa/gg       

mm-[aa]aa/gg       

[m]m.[aa]aa.gg       

gma                         

gg/[m]m/[aa]aa       

gg-[m]m-[aa]aa       

gg.[m]m.[aa]aa       

gam                         

gg/[aa]aa/[m]m       

gg-[aa]aa-[m]m       

gg.[aa]aa.[m]m       

amg                         

[aa]aa/[m]m/gg       

[aa]aa-[m]m-gg       

[aa]aa-[m]m-gg       

[m]m, gg e [aa]aa rappresentano il mese, il giorno e l'anno all'interno di una stringa in cui sono utilizzati come separatori la barra (/), il segno meno (-) o il punto (.).

Sono supportati solo anni a due cifre o a quattro cifre. Utilizzare sempre anni a quattro cifre quando possibile. Per specificare un numero integer da 0001 a 9999 che rappresenta l'anno di cambio data per l'interpretazione degli anni a due cifre come anni a quattro cifre, utilizzare l'opzione Opzione two digit year cutoff.

Un anno a due cifre con valore minore o uguale alle ultime due cifre dell'anno di cambio data si trova nello stesso secolo dell'anno di cambio data. Un anno a due cifre con valore maggiore delle ultime due cifre dell'anno di cambio data si trova nel secolo precedente a quello dell'anno di cambio data. Ad esempio, se il valore dell'anno di cambio data è 2049 (impostazione predefinita), l'anno a due cifre 49 è interpretato come 2049 mentre l'anno a due cifre 50 è interpretato come 1950.

Il formato predefinito della data è determinato dall'impostazione della lingua corrente. È possibile modificare il formato di data utilizzando le istruzioni SET LANGUAGE e SET DATEFORMAT.

Il formato ydm non è supportato per date.

Espressione alfabetica

Descrizione

mese [gg][,] aaaa      

mese gg[,] [aa]aa      

mese aaaa [gg]          

[gg] mese[,] aaaa      

gg mese[,][aa]aa       

gg [aa]aa mese         

[gg] aaaa mese         

aaaa mese [gg]         

aaaa [gg] mese         

mon rappresenta il nome completo o l'abbreviazione del mese nella lingua corrente. Le virgole sono facoltative e l'uso delle maiuscole è ignorato.

Per evitare ambiguità, esprimere gli anni nel formato a quattro cifre.

Se manca il giorno, viene inserito il primo giorno del mese.

ISO 8601

Descrizione

AAAA-MM-GG            

AAAAMMGG               

Uguale allo standard SQL. Si tratta dell'unico formato definito come standard internazionale.

Senza separatori

Descrizione

[aa]aammgg            

aaaa[mm][gg]          

I dati relativi all'elemento date possono essere specificati con quattro, sei o otto cifre. Una stringa a sei o otto cifre viene sempre interpretata come ymd (amg). Il mese e il giorno devono sempre essere rappresentati da due cifre. Una stringa di quattro cifre viene interpretata come anno.

ODBC

Descrizione

{ g 'aaaa-mm-gg' }   

Specifico delle API ODBC

Il funzionamento in SQL Server 2008 corrisponde a quello in SQL Server 2005.

Formato W3C XML

Descrizione

aaaa-mm-ggTZD      

Specificamente supportato per l'utilizzo di XML/SOAP.

TZD è l'identificatore del fuso orario (Z, + hh:mm o - hh:mm):

  • hh:mm rappresenta la differenza di fuso orario. hh rappresenta due cifre, da 0 a 14, corrispondenti al numero di ore della differenza di fuso orario.

  • MM è un numero di due cifre, tra 0 e 59, che rappresenta il numero di minuti aggiuntivi della differenza di fuso orario.

  • + (più) o - (meno) è il segno obbligatorio della differenza di fuso orario. Indica che la differenza di fuso orario viene aggiunta o sottratta dall'ora UTC (Coordinated Universal Times) per ottenere l'ora locale. L'intervallo valido della differenza di fuso orario è da -14:00 a +14:00.

Conformità agli standard ANSI e ISO 8601

L'elemento date è conforme alla definizione dello standard ANSI SQL per il calendario gregoriano: "NOTA 85 – i tipi di dati Datetime consentono di memorizzare le date in formato gregoriano nell'intervallo di date compreso tra 0001–01–01 CE e 9999–12–31 CE".

Il formato predefinito dei valori letterali stringa utilizzato per i client legacy è conforme al formato standard SQL, definito come AAAA-MM-GG. Questo formato è lo stesso della definizione ISO 8601 per DATE.

Esempi

Nell'esempio seguente vengono confrontati i risultati dell'esecuzione del cast di una stringa ai tipi di dati date e time.

SELECT 
     CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'time' 
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date' 
    ,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS 
        'smalldatetime' 
    ,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime' 
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(7)) AS 
        'datetime2'
    ,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS 
        'datetimeoffset';

Set di risultati:

Tipo di dati

Output

time

12:35:29. 1234567

date

2007-05-08

smalldatetime

2007-05-08 12:35:00

datetime

2007-05-08 12:35:29.123

datetime2

2007-05-08 12:35:29. 1234567

datetimeoffset

2007-05-08 12:35:29.1234567 +12:15