Condividi tramite


Associazioni e conversioni (OLE DB)

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 datetime stringhe e datetimeoffset è:

    yyyy-millimetro-dd[ hh:mm:ss[.9999999][ ?? hh:mm]]

  • Il formato delle time stringhe è:

    hh:mm:ss[.9999999]

  • Il formato delle date stringhe è:

    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.

Vedere anche

Miglioramenti relativi a data e ora (OLE DB)