Conversies (OLE DB)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform Systeem (PDW)SQL-database in Microsoft Fabric

OLE DB-stuurprogramma downloaden

Deze sectie bespreekt hoe je kunt omzetten tussen datetime- en datetimeoffset-waarden . De in deze sectie beschreven conversies zijn ofwel al geleverd door OLE DB of zijn een consistente uitbreiding van OLE DB.

Het formaat van literals en strings voor data en tijden in OLE DB volgt over het algemeen ISO en is niet afhankelijk van de clientlocatie. Een uitzondering is DBTYPE_DATE, waarbij de standaard OLE Automation is. Omdat OLE DB Driver for SQL Server echter alleen tussen types converteert wanneer data naar of van de client wordt verzonden, is er geen manier voor een applicatie om OLE DB Driver for SQL Server te dwingen om te converteren tussen DBTYPE_DATE- en stringformaten. Anders gebruiken strings de volgende formaten (tekst tussen haakjes geeft een optioneel element aan):

  • Het formaat van datetime- en datetimeoffset-strings is:

    yyyy-Mm-dd[ hh:mm:ss[.9999999][ ± hh:mm]]

  • Het format van tijdstringen is:

    hh:mm:ss[.9999999]

  • Het formaat van datumreeksen is:

    yyyy-Mm-Dd

Opmerking

Eerdere versies van SQL Server Native Client en SQLOLEDB implementeerden OLE-conversies, voor het geval standaardconversies faalden. De OLE DB-driver voor SQL Server vertoont hetzelfde gedrag als de SQL Server Native Client. Als gevolg hiervan verschillen sommige conversies die door OLE DB Driver voor SQL Server worden uitgevoerd van de OLE DB-specificatie.

Conversies van strings bieden flexibiliteit in witruimte en veldbreedte. Voor meer informatie, zie de sectie "Data Formats: Strings and Literals" in Data Type Support voor OLE DB Datum- en Tijdverbeteringen.

De volgende zijn algemene conversieregels:

  • Wanneer een string wordt omgezet naar een datum/tijd-type, wordt de string eerst geparsed als een ISO-literaal. Als dit faalt, wordt de string geparseerd als een OLE-datumliteraal, die tijdcomponenten heeft.

  • Als er geen tijd aanwezig is maar de ontvanger tijd kan opslaan, wordt de tijd op nul gezet. Als er geen datum aanwezig is maar de ontvanger een datum kan opslaan, wordt de datum ingesteld op de huidige datum waarop ISO-conversies worden gebruikt en op 1899-12-30 wanneer OLE-conversies worden gebruikt.

  • Als er geen tijdzone aanwezig is in het datatype dat de client gebruikt, maar de server wel de tijdzone kan opslaan, wordt aangenomen dat de gegevens op de client in de clienttijdzone liggen.

  • Als er geen tijdzone aanwezig is op de server maar de client tijdzone-informatie heeft, wordt aangenomen dat de UTC-tijdzone is. Dit verschilt van het gedrag van de server.

  • Als de tijd aanwezig is maar de ontvanger geen tijd kan opslaan, wordt de tijdcomponent genegeerd.

  • Als de datum aanwezig is maar de ontvanger deze niet kan opslaan, wordt het datumcomponent genegeerd.

  • Als er een afkorting van seconden of fracties van seconden optreedt bij het converteren van client naar server, wordt DB_E_ERRORSOCCURRED teruggegeven en wordt de status DBSTATUS_E_DATAOVERFLOW ingesteld.

  • Als er afkorting van seconden of fracties van seconden optreedt bij het converteren van server naar client, wordt DBSTATUS_S_TRUNCATED ingesteld

In deze sectie

Conversies uitgevoerd van client naar server
Beschrijft datum/tijd-conversies die zijn uitgevoerd tussen een clientapplicatie geschreven met OLE DB Driver voor SQL Server 2008 (10.0.x) en latere versies.

Conversies uitgevoerd van server naar client
Beschrijft datum/tijdconversies uitgevoerd tussen SQL Server 2008 (10.0.x) en latere versies, en een clientapplicatie geschreven met OLE DB Driver voor SQL Server.

Zie ook

Datum- en tijdverbeteringen (OLE DB)