Condividi tramite


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.

Vedere anche

Concetti

Miglioramenti relativi a data e ora (OLE DB)