Conversies uitgevoerd van server naar client

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

OLE DB-stuurprogramma downloaden

Dit artikel beschrijft datum/tijd-conversies die zijn uitgevoerd tussen SQL Server 2008 (10.0.x) en latere versies, en een clientapplicatie geschreven met OLE DB Driver voor SQL Server.

Conversions

De volgende tabel beschrijft conversies tussen het type dat aan de client wordt teruggegeven en het type in de binding. Voor uitvoerparameters, als ICommandWithParameters::SetParameterInfo is aangeroepen en het type gespecificeerd in pwszDataSourceType niet overeenkomt met het daadwerkelijke type op de server, zal de server een impliciete conversie uitvoeren en zal het type dat aan de client wordt teruggegeven overeenkomen met het type dat is gespecificeerd via ICommandWithParameters::SetParameterInfo. Dit kan leiden tot onverwachte conversieresultaten wanneer de conversieregels van de server afwijken van die beschreven in dit artikel. Wanneer bijvoorbeeld een standaarddatum moet worden opgegeven, gebruikt SQL Server 1900-1-1 in plaats van 1899-12-30.

Aan->

Van
DATE DBDATE DBTIME DBTIME2 DB-tijdstempel DBTIMESTAMPOFFSET ARCHIVTIME BYTES VARIANT SSVARIANT BSTR STR WSTR
Datum 1, 7 OK - - 1 1, 3 1, 7 - OK (VT_BSTR) OK OK 4 4
Time 5, 6, 7 - 9 OK 6 3, 6 5, 6 - OK (VT_BSTR) OK OK 4 4
Smalldatetime 7 8 9, 10 10 OK 3 7 - 7 (VT_DATE) OK OK 4 4
Datum/tijd 5, 7 8 9, 10 10 OK 3 7 - 7 (VT_DATE) OK OK 4 4
Datetime2 5, 7 8 9, 10 10 7 3 5, 7 - OK (VT_BSTR) OK OK 4 4
datum- en tijdcompensatie 5, 7, 11 8, 11 9, 10, 11 10, 11 7, 11 OK 5, 7, 11 - OK (VT_BSTR) OK OK 4 4
Char, Varchar,

Nchar, Nvarchar
7, 13 12 12, 9 12 12 12 7, 13 N/A N/A N/A N/A N/A N/A
Sql_variant

(datum)
7 8 9, 10 10 OK 3 7 - 7(VT_DATE) OK OK 4 4
Sql_variant

(smalldatetime)
7 8 9, 10 10 OK 3 7 - 7(VT_DATE) OK OK 4 4
Sql_variant

(datum)
1, 7 OK 2 2 1 1, 3 1, 7 - OK(VT_BSTR) OK OK 4 4
Sql_variant

(tijd)
5, 6, 7 2 6 OK 6 3, 6 5, 6 - OK(VT_BSTR) OK OK 4 4
Sql_variant

(datetime2)
5, 7 8 9, 10 10 OK 3 5, 7 - OK(VT_BSTR) OK OK 4 4
Sql_variant

(datum-tijd-verplaatsing)
5, 7, 11 8, 11 9, 10, 11 10, 11 7, 11 OK 5, 7, 11 - OK(VT_BSTR) OK OK 4 4

Sleutel tot symbolen

Symbol Meaning
OK Er is geen conversie nodig.
- Er wordt geen conversie ondersteund. Als de binding wordt gevalideerd wanneer IAccessor::CreateAccessor wordt aangeroepen, wordt DBBINDSTATUS_UPSUPPORTEDCONVERSION teruggegeven in rgStatus. Wanneer accessorvalidatie wordt uitgesteld, wordt DBSTATUS_E_BADACCESSOR ingesteld.
1 De tijdvelden zijn op nul gezet.
2 DBSTATUS_E_CANTCONVERTVALUE is klaar.
3 De tijdzone staat op nul.
4 Als de clientbuffer niet groot genoeg is, is DBSTATUS_S_TRUNCATED ingesteld. Wanneer het servertype fracties van seconden bevat, komt het aantal cijfers in de resultaatreeks exact overeen met de schaal van het servertype.
5 Het afkappen van seconden of fracties van seconden wordt genegeerd.
6 De datum wordt ingesteld op de huidige datum, tenzij de bron een string-tijdliteraal is en de bestemming DBTYPE_DATE. In dit geval wordt 1899-12-30 gebruikt.
7 Als de waarde overloopt, wordt DBSTATUS_E_DATAOVERFLOW vastgesteld.
8 Tijdvelden worden genegeerd.
9 Fractionele secondenvelden worden genegeerd.
10 Het datumonderdeel wordt genegeerd.
11 De tijd wordt omgezet naar de tijdzone van de cliënt. Als er een fout optreedt tijdens deze omzetting, wordt DBSTATUS_E_DATAOVERFLOW ingesteld.
12 De string wordt geparsed als een ISO-literaal en omgezet naar het doeltype. Als dit faalt, wordt de string geparseerd als een OLE-datumliteraal (dat ook tijdcomponenten heeft) en omgezet van een OLE-datum (DBTYPE_DATE) naar het doeltype. De string moet voldoen aan de syntaxis van literals van het doeltype dat is toegestaan voor ISO-formaat parsing om succesvol te zijn. Om OLE-parsing te laten slagen, moet de string voldoen aan de syntaxis die door OLE wordt herkend. Als de string niet kan worden geparseerd, wordt DBSTATUS_E_CANTCONVERTVALUE vastgesteld. Als een componentwaarde buiten bereik ligt, wordt DBSTATUS_E_DATAOVERFLOW ingesteld.
13 De string wordt geparsed als een ISO-literaal en omgezet naar het doeltype. Als dit faalt, wordt de string geparseerd als een OLE-datumliteraal (dat ook tijdcomponenten heeft) en omgezet van een OLE-datum (DBTYPE_DATE) naar het doeltype. De string moet voldoen aan de syntaxis voor datetime-literals, tenzij de bestemming DBTYPE_DATE of DBTYPE_DBTIMESTAMP is. Als dit het geval is, is een datetime of time literal toegestaan zodat ISO-formaat parsing succesvol is. Om OLE-parsing te laten slagen, moet de string voldoen aan de syntaxis die door OLE wordt herkend. Als de string niet kan worden geparseerd, wordt DBSTATUS_E_CANTCONVERTVALUE vastgesteld. Als een componentwaarde buiten bereik ligt, wordt DBSTATUS_E_DATAOVERFLOW ingesteld.

Zie ook

Bindingen en Conversies (OLE DB)