Associazioni e conversioni (OLE DB)
In questa sezione viene descritto come eseguire conversioni tra valori datetime e datetimeoffset. Le conversioni descritte in questa sezione sono già disponibili in OLE DB o costituiscono un'estensione coerente di OLE DB.
Il formato di valori letterali e stringhe per date e ore in OLE DB segue in genere lo standard ISO e non dipende dalle impostazioni locali del client. Un'eccezione è rappresentata da DBTYPE_DATE, che utilizza come standard l'automazione OLE. Poiché, tuttavia, SQL Server Native Client esegue conversioni tra tipi solo quando i dati vengono trasmessi al o dal client, un'applicazione non può forzare in alcun modo SQL Server Native Client per eseguire conversioni tra DBTYPE_DATE e formati stringa. In caso contrario, le stringhe utilizzano i formati indicati di seguito. Il testo tra parentesi indica un elemento facoltativo.
Formato delle stringhe datetime e datetimeoffset:
yyyy-mm-dd[ hh:mm:ss[.9999999][ ± hh:mm]]
Formato delle stringhe time:
hh:mm:ss[.9999999]
Formato delle stringhe date:
yyyy-mm-dd
[!NOTA]
Le versioni precedenti di SQL Server Native Client e SQLOLEDB implementano conversioni OLE se le conversioni standard non vengono eseguite correttamente. Di conseguenza, alcune conversioni eseguite in SQL Server Native Client 10.0 e versioni successive differiscono dalla specifica OLE DB.
Le conversioni dalle stringhe consentono flessibilità nella larghezza degli spazi vuoti e dei campi. Per ulteriori informazioni, vedere la sezione "Formati di dati: stringhe e valori letterali" in Supporto dei tipi di dati per i miglioramenti dei tipi di data/ora OLE DB.
Di seguito vengono fornite le regole di conversione generali:
Quando una stringa viene convertita in un tipo di data/ora, la stringa viene prima analizzata come valore letterale ISO. Se l'operazione ha esito negativo, la stringa viene analizzata come valore letterale di data OLE, che include componenti per l'ora.
Se l'ora non è presente ma il ricevitore può archiviare l'ora, questa viene impostata su zero. Se la data non è presente ma il ricevitore può archiviare la data, questa viene impostata sulla data corrente quando si utilizzano conversioni ISO e su 1899-12-30 quando si utilizzano conversioni OLE.
Se nel tipo di dati utilizzato dal client non è presente il fuso orario, ma il server può archiviare il fuso orario, la data nel client viene considerata nel fuso orario utilizzato dal client stesso.
Se nel server non è presente il fuso orario ma il client dispone di informazioni sul fuso orario, viene presupposto il fuso orario UTC. Questo comportamento differisce da quello del server.
Se l'ora è presente ma il ricevitore non può archiviare l'ora, il componente per l'ora viene ignorato.
Se la data è presente ma il ricevitore non può archiviare la data, il componente per la data viene ignorato.
Se si verifica un troncamento di secondi o di secondi frazionari durante la conversione dal client al server, viene restituito DB_E_ERRORSOCCURRED e viene impostato lo stato DBSTATUS_E_DATAOVERFLOW.
Se si verifica un troncamento di secondi o di secondi frazionari durante la conversione dal server al client, viene impostato lo stato DBSTATUS_S_TRUNCATED.
Contenuto della sezione
Conversioni eseguite da client a server
Vengono descritte le conversioni di data/ora eseguite tra un'applicazione client scritta con la specifica OLE DB di SQL Server Native Client e SQL Server 2008 (o versione successiva).Conversioni eseguite da server a client
Vengono descritte le conversioni di data/ora eseguite tra SQL Server 2008 (o versione successiva) e un'applicazione client scritta con la specifica OLE DB di SQL Server Native Client.