Conversies uitgevoerd van client naar server

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 een clientapplicatie geschreven met OLE DB Driver voor SQL Server 2008 (10.0.x) en latere versies.

Conversions

Dit artikel beschrijft conversies die op de klant zijn gemaakt. Als de client fractionele seconden precisie specificeert voor een parameter die afwijkt van die op de server gedefinieerd, kan de clientconversie een storing veroorzaken in gevallen waarin de server de operatie zou laten slagen. In het bijzonder behandelt de client elke afkorting van fracties van seconden als een fout, terwijl SQL Server tijdwaarden afrondt tot de dichtstbijzijnde hele seconde.

Als ICommandWithParameters::SetParameterInfo niet wordt aangeroepen, worden DBTYPE_DBTIMESTAMP bindings omgezet alsof ze datetime2 zijn.

Aan->

Van
DBDATE (datum) DBTIME (tijd) DBTIME2 (tijd) DBTIMESTAMP (smalldatetime) DBTIMESTAMP (datum-tijd) DBTIMESTAMP (datetime2) DBTIMESTAMPOFFSET (datumtimeoffset) STR WSTR SQLVARIANT

(sql_variant)
DATE 1, 2 1, 3, 4 4, 12 1, 12 1, 12 1, 12 1, 5, 12 1, 12 1, 12 1, 12

datetime2(0)
DBDATE 1 - - 1, 6 1, 6 1, 6 1, 5, 6 1, 10 1, 10 1

date
DBTIME - 1 1 1, 7 1, 7 1, 7 1, 5, 7 1, 10 1, 10 1

Tijd(0)
DBTIME2 - 1, 3 1 1, 7, 10, 14 1, 7, 10, 15 1, 7, 10 1, 5, 7, 10 1, 10, 11 1, 10, 11 1

Tijd(7)
DB-tijdstempel 1, 2 1, 3, 4 1, 4, 10 1, 10, 14 1, 10, 15 1, 10 1, 5, 10 1, 10,11 1, 10, 11 1, 10

Datetime2(7)
DBTIMESTAMPOFFSET 1, 2, 8 1, 3, 4, 8 1, 4, 8, 10 1, 8, 10, 14 1, 8, 10, 15 1, 8, 10 1, 10 1, 10, 11 1, 10, 11 1, 10

DatumTijdOffset(7)
ARCHIVTIME 1, 2 1, 3, 4 1, 4, 13 1, 13 1, 13 1, 13 1, 5, 13 1, 13 1, 10 1, 13

Datetime2(3)
BYTES - - - - - - - N/A N/A N/A
VARIANT 1 1 1 1, 10 1, 10 1, 10 1, 10 N/A N/A 1, 10
SSVARIANT 1, 16 1, 16 1, 16 1, 10, 16 1, 10, 16 1, 10, 16 1, 10, 16 N/A N/A 1, 16
BSTR 1, 9 1, 9 1, 9, 10 1, 9, 10 1, 9, 10 1, 9, 10 1, 9, 10 N/A N/A N/A
STR 1, 9 1, 9 1, 9, 10 1, 9, 10 1, 9, 10 1, 9, 10 1, 9, 10 N/A N/A N/A
WSTR 1, 9 1, 9 1, 9, 10 1, 9, 10 1, 9, 10 1, 9, 10 1, 9, 10 N/A N/A N/A

Sleutel tot symbolen

Symbol Meaning
- 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.
N/A Niet van toepassing.
1 Als de geleverde gegevens niet geldig zijn, wordt DBSTATUS_E_CANTCONVERTVALUE ingesteld. Invoergegevens worden gevalideerd voordat conversies worden toegepast, dus zelfs wanneer een component wordt genegeerd door een volgende conversie, moet deze nog steeds geldig zijn om de conversie te laten slagen.
2 Tijdvelden worden genegeerd.
3 Fractieseconden moeten nul zijn of DBSTATUS_E_DATAOVERFLOW wordt vastgesteld.
4 Het datumonderdeel wordt genegeerd.
5 De tijdzone is ingesteld op de tijdzone-instelling van de klant.
6 De tijd staat op nul.
7 De datum wordt vastgesteld op de huidige datum.
8 De tijd wordt omgezet naar UTC. Als er een fout optreedt tijdens deze conversie, wordt DBSTATUS_E_CANTCONVERTVALUE ingesteld.
9 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.

Als het doeltype DBTIMESTAMP, smalldatetime,datetime of datetime2 is, moet de string voldoen aan de syntaxis van date, time of datetime2-literals , of de syntaxis die door OLE wordt herkend. Als de string een datumliteraal is, worden alle tijdcomponenten op nul gezet. Als de string een tijdliteraal is, wordt de datum ingesteld op de huidige datum.

Voor alle andere doeltypes moet de string voldoen aan de syntaxis voor literals van het doeltype.
10 Als er afkap van fracties van seconden met dataverlies plaatsvindt, wordt DBSTATUS_E_DATAOVERFLOW ingesteld. Voor stringconversies is overflowcontrole alleen mogelijk wanneer de string voldoet aan de ISO-syntaxis. Als de string een OLE-datumliteraal is, worden fractieseconden afgerond.

Voor de conversie van DBTIMESTAMP (datetime) naar smalldatetime zal OLE DB Driver voor SQL Server de secondenwaarde stilletjes afkorten in plaats van de DBSTATUS_E_DATAOVERFLOW fout te genereren.
11 Het aantal fracties van seconden (de schaal) wordt bepaald uit de grootte van de bestemmingskolom, volgens de onderstaande tabel. Voor kolomgroottes groter dan het bereik in de tabel wordt een schaal van 9 geïmpliceerd. Deze conversie zou tot negen fracties van seconden moeten toestaan, het maximum dat door OLE DB is toegestaan.

Als het brontype echter DBTIMESTAMP is en de fractie van seconden nul, worden er geen fracties van tweede cijfers of decimale punten gegenereerd. Dit gedrag zorgt voor achterwaartse compatibiliteit voor applicaties die zijn ontwikkeld met oudere OLE DB-providers.

Een kolomgrootte van ~0 impliceert onbeperkte grootte in OLE DB (9 cijfers, tenzij de 3-cijferige regel voor DBTIMESTAMP van toepassing is).
12 Conversiesemantiek vóór SQL Server 2008 (10.0.x) voor DBTYPE_DATE wordt onderhouden. Fracties van seconden worden afgekapt tot nul.
13 Conversiesemantiek vóór SQL Server 2008 (10.0.x) voor DBTYPE_FILETIME wordt onderhouden. Als je de Windows FileTimeToSystemTime API gebruikt, is de precisie van fractieseconden beperkt tot 1 milliseconde.
14 Conversiesemantiek vóór SQL Server 2008 (10.0.x) voor smalldatetime wordt onderhouden. Seconden staan op nul.
15 Conversiesemantiek vóór SQL Server 2008 (10.0.x) voor datetime wordt onderhouden. Seconden worden afgerond op de dichtstbijzijnde 300ste van een seconde.
16 Het conversiegedrag van een waarde (van een bepaald type) die is ingebed in een SSVARIANT clientstruct is hetzelfde als het gedrag van dezelfde waarde en hetzelfde type wanneer deze niet in een SSVARIANT clientstruct is ingebed.
Typologie Lengte (in karakters) Scale
DBTIME2 8, 10..18 0,1..9
DB-tijdstempel 19, 21..29 0,1..9
DBTIMESTAMPOFFSET 26, 28..36 0,1..9

Zie ook

Bindingen en Conversies (OLE DB)