Condividi tramite


Miglioramenti relativi a data e ora

In questo argomento viene descritto il supporto aggiunto a SQL Server Native Client 10.0 per i nuovi tipi di dati di data e ora aggiunti in SQL Server 2008.

Per ulteriori informazioni sui miglioramenti apportati ai tipi di data/ora, vedere Miglioramenti relativi a data e ora (OLE DB) e Miglioramenti relativi a data e ora (ODBC).

Per informazioni sulle applicazioni di esempio in cui viene illustrata questa funzionalità, vedere Considerazioni per l'installazione di esempi e di database di esempio di SQL Server.

Utilizzo

Nelle sezioni seguenti vengono descritte le diverse modalità di utilizzo dei nuovi tipi di data e ora.

Utilizzare il tipo date come tipo di dati distinto

A partire da SQL Server 2008, il supporto migliorato per i tipi di data/ora consente un utilizzo più efficiente del tipo SQL_TYPE_DATE ODBC (SQL_DATE per le applicazioni ODBC 2.0) e del tipo DBTYPE_DBDATE OLE DB.

Utilizzare il tipo time come tipo di dati distinto

OLE DB include già un tipo di dati che contiene solo l'ora, ovvero DBTYPE_DBTIME, che garantisce precisione pari a 1 secondo. Il tipo equivalente in ODBC è SQL_TYPE_TIME (SQL_TIME per le applicazioni ODBC 2.0).

Il nuovo tipo di dati time di SQL Server ha una precisione frazionaria dei secondi pari a 100 nanosecondi. Per questo motivo, sono necessari nuovi tipi in SQL Server Native Client: DBTYPE_DBTIME2 (OLE DB) e SQL_SS_TIME2 (ODBC). Le applicazioni esistenti scritte per utilizzare le ore senza secondi frazionari possono utilizzare colonne time(0). I tipi OLE DB DBTYPE_TIME e ODBC SQL_TYPE_TIME esistenti e le strutture corrispondenti funzioneranno correttamente, a meno che le applicazioni non si basino sul tipo restituito nei metadati.

Utilizzare il tipo time come tipo di dati distinto con precisione frazionaria dei secondi estesa

Alcune applicazioni, ad esempio le applicazioni di controllo dei processi e di produzione, richiedono la possibilità di gestire i dati di tipo time con una precisione pari a fino 100 nanosecondi. I nuovi tipi a tale scopo sono DBTYPE_DBTIME2 (OLE DB) e SQL_SS_TIME2 (ODBC).

Utilizzare il tipo datetime con precisione frazionaria dei secondi estesa

OLE DB definisce già un tipo con una precisione pari fino a 1 nanosecondo. Questo tipo, tuttavia, è già utilizzato dalle applicazioni di SQL Server esistenti, che garantiscono una probabile precisione pari solo a 1/300 di secondo. Il nuovo tipo datetime2(3) non è direttamente compatibile con il tipo datetime esistente. Se vi è un rischio che tale tipo di dati influisca negativamente sul comportamento dell'applicazione, le applicazioni devono utilizzare un nuovo flag DBCOLUMN per determinare il tipo di server effettivo.

Anche ODBC definisce già un tipo con una precisione pari fino a 1 nanosecondo. Questo tipo, tuttavia, è già utilizzato dalle applicazioni di SQL Server esistenti, che garantiscono una probabile precisione pari solo a 3 millisecondi. Il nuovo tipo datetime2(3) non è direttamente compatibile con il tipo datetime esistente. datetime2(3) garantisce una precisione di un millisecondo, mentre datetime garantisce una precisione di 1/300 di secondo. In ODBC le applicazioni possono determinare il tipo di server in uso tramite il campo di descrizione SQL_DESC_TYPE_NAME. Il tipo SQL_TYPE_TIMESTAMP (SQL_TIMESTAMP per le applicazioni ODBC 2.0) esistente può essere utilizzato per entrambi i tipi.

Utilizzare il tipo datetime con precisione frazionaria dei secondi estesa e fuso orario

Alcune applicazioni richiedono valori datetime con informazioni sul fuso orario. Questo requisito è supportato dai nuovi tipi DBTYPE_DBTIMESTAMPOFFSET (OLE DB) e SQL_SS_TIMESTAMPOFFSET (ODBC).

Utilizzare dati di tipo date/time/datetime/datetimeoffset con conversioni sul lato client coerenti con le conversioni esistenti

Lo standard ODBC descrive il funzionamento delle conversioni tra tipi di data, ora e timestamp. Tali tipi sono estesi in modo coerente per includere conversioni tra tutti i tipi di data e ora introdotti in SQL Server 2008.