Miglioramenti relativi a data e ora
Questo argomento descrive il supporto di SQL Server Native Client per i tipi di dati data e ora aggiunti in SQL Server 2008.
Per altre informazioni sui miglioramenti relativi alla data/ora, vedere Miglioramenti di data e ora (OLE DB) e Miglioramenti di data e ora (ODBC).
Per informazioni sulle applicazioni di esempio in cui viene illustrata questa funzionalità, vedere la pagina relativa agli esempi di programmazione dati di SQL Server.
Uso
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 avanzato per i tipi di data/ora rende più efficiente usare il tipo ODBC SQL_TYPE_DATE (SQL_DATE per applicazioni ODBC 2.0) e il tipo OLE DB DBTYPE_DBDATE.
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. Questo richiede 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à usato 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. Tuttavia, questo tipo è già usato dalle applicazioni SQL Server esistenti e tali applicazioni prevedono solo 3 millisecondi di precisione. Il nuovo datetime2(3)
tipo non è direttamente compatibile con il tipo esistente datetime
. datetime2(3)
dispone di una precisione di un millisecondo e datetime
dispone di 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. Queste sono estese in modo coerente per includere conversioni tra tutti i tipi di data e ora introdotti in SQL Server 2008.