Freigeben über


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

Verbesserungen bei Datum und Zeit (ODBC)