Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questa sezione viene illustrato come eseguire la conversione tra datetime valori e datetimeoffset . Le conversioni descritte in questa sezione sono già fornite da OLE DB o sono un'estensione coerente di OLE DB.
Il formato di valori letterali e stringhe per date e ore in OLE DB segue in genere ISO e non dipende dalle impostazioni locali del client. Un'eccezione è DBTYPE_DATE, dove lo standard è Automazione OLE. Tuttavia, poiché SQL Server Native Client esegue la conversione solo tra tipi quando i dati vengono trasmessi al client o dal client, non è possibile forzare la conversione di SQL Server Native Client tra DBTYPE_DATE e i formati di stringa. In caso contrario, le stringhe usano i formati seguenti (il testo tra parentesi quadre indica un elemento facoltativo):
Il formato delle
datetimestringhe edatetimeoffsetè:yyyy-millimetro-dd[ hh:mm:ss[.9999999][ ?? hh:mm]]
Il formato delle
timestringhe è:hh:mm:ss[.9999999]
Il formato delle
datestringhe è:yyyy-millimetro-Dd
Annotazioni
Nelle versioni precedenti di SQL Server Native Client e SQLOLEDB sono state implementate conversioni OLE, nel caso in cui le conversioni standard non siano riuscite. Di conseguenza, alcune conversioni eseguite da SQL Server Native Client 10.0 e versioni successive differiscono dalla specifica OLE DB.
Le conversioni da stringhe consentono flessibilità nello spazio vuoto e nella larghezza dei campi. Per altre informazioni, vedere la sezione "Formati di dati: stringhe e valori letterali" in Supporto dei tipi di dati per i miglioramenti di data e ora OLE DB.
Di seguito sono riportate le regole di conversione generali:
Quando una stringa viene convertita in un tipo data/ora, la stringa viene prima analizzata come valore letterale ISO. In caso di errore, la stringa viene analizzata come valore letterale data OLE, che include componenti di ora.
Se non è presente alcun tempo, ma il ricevitore può archiviare l'ora, l'ora viene impostata su zero. Se non è presente alcuna data, ma il ricevitore può archiviare una data, la data viene impostata sulla data corrente quando vengono utilizzate le conversioni ISO e su 1899-12-30 quando vengono utilizzate le conversioni OLE.
Se non è presente alcun fuso orario nel tipo di dati usato dal client, ma il server può archiviare il fuso orario, si presuppone che i dati nel client siano nel fuso orario del client.
Se non è presente alcun fuso orario nel server, ma il client dispone di informazioni sul fuso orario, si presuppone il fuso orario UTC. Questo comportamento differisce dal comportamento del server.
Se l'ora è presente ma il ricevitore non può archiviare l'ora, il componente ora viene ignorato.
Se la data è presente ma il ricevitore non può archiviare la data, il componente data viene ignorato.
Se si verifica il troncamento di secondi o secondi frazionari durante la conversione da client a server, viene restituito DB_E_ERRORSOCCURRED e viene impostato lo stato DBSTATUS_E_DATAOVERFLOW.
Se si verifica il troncamento di secondi o secondi frazionari durante la conversione dal server al client, viene impostato DBSTATUS_S_TRUNCATED
In questa sezione
Conversioni eseguite dal client al server
Vengono descritte le conversioni di data/ora eseguite tra un'applicazione client scritta con SQL Server Native Client OLE DB e SQL Server 2008 (o versione successiva).
Conversioni eseguite dal server al client
Vengono descritte le conversioni di data/ora eseguite tra SQL Server 2008 (o versione successiva) e un'applicazione client scritta con SQL Server Native Client OLE DB.