sql_variant-Unterstützung für Datums- und Uhrzeittypen
Gilt für: SQL Server
Azure SQL-Datenbank
Azure SQL verwaltete Instanz
Azure Synapse Analytics Analytics
Platform System (PDW)
In diesem Thema wird beschrieben, wie der sql_variant Datentyp 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 Variant-Ergebnisspalte in der Implementierungszeilenbeschreibung (IRD) festlegt. SQL_CA_SS_VARIANT_SQL_TYPE können auch im Implementierungsparameterdeskriptor (IPD) verwendet werden, um den SQL-Typ eines SQL_SS_TIME2 oder SQL_SS_TIMESTAMPOFFSET Parameters anzugeben, der SQL_C_BINARY C-Typ mit Typ SQL_SS_VARIANT gebunden ist.
Die neuen Typen SQL_SS_TIME2 und SQL_SS_TIMESTAMPOFFSET können von 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 zu C. Bei der Bindung an SQL_C_BINARY muss die Pufferlänge groß genug sein, um die Struktur zu erhalten, die dem SQL-Typ entspricht.
Für die Parameter SQL_SS_TIME2 und SQL_SS_TIMESTAMPOFFSET wandelt der Treiber C-Werte in sql_variant Werte um, 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 wird auf SQL_DESC_PRECISION (der Parameter DecimalDigits von SQLBindParameter) festgelegt. |
SQL_C_BINARY | datetimeoffset | SQL_CA_SS_VARIANT_SQL_TYPE = SQL_SS_TIMESTAMPOFFSET Die Skalierung wird auf SQL_DESC_PRECISION (der Parameter DecimalDigits 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 wird auf SQL_DESC_PRECISION (der Parameter DecimalDigits von SQLBindParameter) festgelegt. |
SQL_C_NUMERIC | Decimal | Genauigkeit wird auf SQL_DESC_PRECISION (der ColumnSize-Parameter von SQLBindParameter) festgelegt. Scale set to SQL_DESC_SCALE (the DecimalDigits parameter of 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-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für