sql_variant-Unterstützung für Datums- und Uhrzeittypen
Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)
In diesem Thema wird beschrieben, wie der datentyp sql_variant erweiterte Datums- und Uhrzeitfunktionen unterstützt.
Das Spaltenattribut SQL_CA_SS_VARIANT_TYPE wird zur Rückgabe des C-Typs einer Variant-Ergebnisspalte verwendet. SQL Server 2008 (10.0.x) führt ein zusätzliches Attribut ein, SQL_CA_SS_VARIANT_SQL_TYPE, das den SQL-Typ einer Variantenergebnisspalte im Implementierungszeilendeskriptor (IRD) festlegt. SQL_CA_SS_VARIANT_SQL_TYPE kann auch im IPD zur Angabe des SQL-Typs eines SQL_SS_TIME2- oder SQL_SS_TIMESTAMPOFFSET-Parameters verwendet werden, der vom C-Typ SQL_C_BINARY ist und an den Typ SQL_SS_VARIANT gebunden wurde.
Die neuen Typen SQL_SS_TIME2 und SQL_SS_TIMESTAMPOFFSET können durch SQLColAttribute festgelegt werden. SQL_CA_SS_VARIANT_SQL_TYPE können von SQLGetDescField zurückgegeben werden.
Für Ergebnisspalten konvertiert der Treiber Daten von Variant- zu Datum-/Uhrzeit-Typen. Weitere Informationen finden Sie unter Konvertierungen von SQL in C. Bei der Bindung an SQL_C_BINARY muss die Pufferlänge groß genug sein, um die Struktur zu empfangen, die dem SQL-Typ entspricht.
Für die Parameter SQL_SS_TIME2 und SQL_SS_TIMESTAMPOFFSET konvertiert der Treiber C-Werte in sql_variant Werte, wie in der folgenden Tabelle beschrieben. Wenn ein Parameter als SQL_C_BINARY gebunden ist und der Servertyp SQL_SS_VARIANT lautet, dann wird er als Binärwert behandelt, sofern die Anwendung SQL_CA_SS_VARIANT_SQL_TYPE nicht auf einen anderen SQL-Typ festgelegt hat. In diesem Fall hat QL_CA_SS_VARIANT_SQL_TYPE Vorrang; d. h. wenn SQL_CA_SS_VARIANT_SQL_TYPE festgelegt wurde, wird damit das Standardverhalten überschrieben, wonach der SQL-Varianttyp vom C-Typ abgeleitet wird.
C-Typ | Servertyp | Kommentare |
---|---|---|
SQL_C_CHAR | varchar | SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_WCHAR | nvarcar | SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_TINYINT | SMALLINT | SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_STINYINT | SMALLINT | SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_SHORT | SMALLINT | SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_SSHORT | SMALLINT | SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_USHORT | INT | SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_LONG | INT | SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_SLONG | INT | SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_ULONG | BIGINT | SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_SBIGINT | BIGINT | SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_FLOAT | real | SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_DOUBLE | float | SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_BIT | bit | SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_UTINYINT | TINYINT | SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_BINARY | varbinary | SQL_CA_SS_VARIANT_SQL_TYPE wird nicht festgelegt. |
SQL_C_BINARY | time | SQL_CA_SS_VARIANT_SQL_TYPE = SQL_SS_TIME2 Die Skalierung ist auf SQL_DESC_PRECISION (der DecimalDigits-Parameter von SQLBindParameter) festgelegt. |
SQL_C_BINARY | datetimeoffset | SQL_CA_SS_VARIANT_SQL_TYPE = SQL_SS_TIMESTAMPOFFSET Die Skalierung ist auf SQL_DESC_PRECISION (der DecimalDigits-Parameter von SQLBindParameter) festgelegt. |
SQL_C_TYPE_DATE | date | SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_TYPE_TIME | time(0) | SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_TYPE_TIMESTAMP | datetime2 | Die Skalierung ist auf SQL_DESC_PRECISION (der DecimalDigits-Parameter von SQLBindParameter) festgelegt. |
SQL_C_NUMERIC | Decimal | Die Genauigkeit ist auf SQL_DESC_PRECISION festgelegt (der ColumnSize-Parameter von SQLBindParameter). Skalierung auf SQL_DESC_SCALE festgelegt (der DecimalDigits-Parameter von SQLBindParameter). |
SQL_C_SS_TIME2 | time | SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_SS_TIMESTAMPOFFSET | datetimeoffset | SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für