Condividi tramite


Conversioni di SQL Server Native Client (OLE DB)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

Questa sezione descrive come eseguire la conversione tra i 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. 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 utilizzano i formati indicati di seguito. Il testo tra parentesi indica un elemento facoltativo.

  • Il formato delle stringhe datetime e datetimeoffset è:

    aaaa-mm-gg[ hh:mm:ss[.9999999][ ± hh:mm]]

  • Il formato delle stringe time è:

    hh:mm:ss[.9999999]

  • Il formato delle stringhe date è:

    aaaa-mm-gg

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 da 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 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 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.

In questa sezione

Conversioni eseguite da client a 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 (10.0.x) (o versione successiva).

Conversioni eseguite da server a client
Vengono descritte le conversioni di data/ora eseguite tra SQL Server 2008 (10.0.x) o versioni successive e un'applicazione client scritta con SQL Server Native Client OLE DB.

Vedi anche

Miglioramenti relativi a data e ora (OLE DB)