Dukungan sql_variant untuk Jenis Tanggal dan Waktu

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Topik ini menjelaskan bagaimana jenis data sql_variant mendukung fungsionalitas tanggal dan waktu yang ditingkatkan.

Atribut kolom SQL_CA_SS_VARIANT_TYPE digunakan untuk mengembalikan tipe C dari kolom hasil varian. SQL Server 2008 (10.0.x) memperkenalkan atribut tambahan, SQL_CA_SS_VARIANT_SQL_TYPE, yang mengatur jenis SQL dari kolom hasil varian dalam deskriptor baris implementasi (IRD). SQL_CA_SS_VARIANT_SQL_TYPE juga dapat digunakan dalam pendeskripsi parameter implementasi (IPD) untuk menentukan jenis SQL parameter SQL_SS_TIME2 atau SQL_SS_TIMESTAMPOFFSET yang memiliki jenis SQL_C_BINARY C yang terikat dengan jenis SQL_SS_VARIANT.

Jenis baru SQL_SS_TIME2 dan SQL_SS_TIMESTAMPOFFSET dapat diatur oleh SQLColAttribute. SQL_CA_SS_VARIANT_SQL_TYPE dapat dikembalikan oleh SQLGetDescField.

Untuk kolom hasil, driver akan mengonversi dari varian ke jenis tanggal/waktu. Untuk informasi selengkapnya, lihat Konversi dari SQL ke C. Saat mengikat ke SQL_C_BINARY, panjang buffer harus cukup besar untuk menerima struct yang sesuai dengan jenis SQL.

Untuk parameter SQL_SS_TIME2 dan SQL_SS_TIMESTAMPOFFSET, driver akan mengonversi nilai C menjadi nilai sql_variant , seperti yang dijelaskan dalam tabel di bawah ini. Jika parameter terikat sebagai SQL_C_BINARY dan jenis server SQL_SS_VARIANT, parameter akan diperlakukan sebagai nilai biner kecuali aplikasi telah mengatur SQL_CA_SS_VARIANT_SQL_TYPE ke beberapa jenis SQL lainnya. Dalam hal ini, SQL_CA_SS_VARIANT_SQL_TYPE diutamakan; artinya, jika SQL_CA_SS_VARIANT_SQL_TYPE diatur, SQL_CA_SS_VARIANT_SQL_TYPE akan mengambil alih perilaku default untuk mengurangi jenis SQL varian dari jenis C.

Tipe C Jenis server Komentar
SQL_C_CHAR varchar SQL_CA_SS_VARIANT_SQL_TYPE diabaikan.
SQL_C_WCHAR nvarcar SQL_CA_SS_VARIANT_SQL_TYPE diabaikan.
SQL_C_TINYINT smallint SQL_CA_SS_VARIANT_SQL_TYPE diabaikan.
SQL_C_STINYINT smallint SQL_CA_SS_VARIANT_SQL_TYPE diabaikan.
SQL_C_SHORT smallint SQL_CA_SS_VARIANT_SQL_TYPE diabaikan.
SQL_C_SSHORT smallint SQL_CA_SS_VARIANT_SQL_TYPE diabaikan.
SQL_C_USHORT int SQL_CA_SS_VARIANT_SQL_TYPE diabaikan.
SQL_C_LONG int SQL_CA_SS_VARIANT_SQL_TYPE diabaikan.
SQL_C_SLONG int SQL_CA_SS_VARIANT_SQL_TYPE diabaikan.
SQL_C_ULONG bigint SQL_CA_SS_VARIANT_SQL_TYPE diabaikan.
SQL_C_SBIGINT bigint SQL_CA_SS_VARIANT_SQL_TYPE diabaikan.
SQL_C_FLOAT real SQL_CA_SS_VARIANT_SQL_TYPE diabaikan.
SQL_C_DOUBLE float SQL_CA_SS_VARIANT_SQL_TYPE diabaikan.
SQL_C_BIT bit SQL_CA_SS_VARIANT_SQL_TYPE diabaikan.
SQL_C_UTINYINT tinyint SQL_CA_SS_VARIANT_SQL_TYPE diabaikan.
SQL_C_BINARY varbinary SQL_CA_SS_VARIANT_SQL_TYPE tidak diatur.
SQL_C_BINARY waktu SQL_CA_SS_VARIANT_SQL_TYPE = SQL_SS_TIME2

Skala diatur ke SQL_DESC_PRECISION ( parameter DecimalDigits dari SQLBindParameter).
SQL_C_BINARY tanggalwaktulewat SQL_CA_SS_VARIANT_SQL_TYPE = SQL_SS_TIMESTAMPOFFSET

Skala diatur ke SQL_DESC_PRECISION ( parameter DecimalDigits dari SQLBindParameter).
SQL_C_TYPE_DATE date SQL_CA_SS_VARIANT_SQL_TYPE diabaikan.
SQL_C_TYPE_TIME time(0) SQL_CA_SS_VARIANT_SQL_TYPE diabaikan.
SQL_C_TYPE_TIMESTAMP tanggalwaktu2 Skala diatur ke SQL_DESC_PRECISION ( parameter DecimalDigits dari SQLBindParameter).
SQL_C_NUMERIC desimal Presisi diatur ke SQL_DESC_PRECISION (parameter ColumnSize SQLBindParameter).

Skala diatur ke SQL_DESC_SCALE ( parameter DecimalDigits dari SQLBindParameter).
SQL_C_SS_TIME2 waktu SQL_CA_SS_VARIANT_SQL_TYPE diabaikan
SQL_C_SS_TIMESTAMPOFFSET tanggalwaktulewat SQL_CA_SS_VARIANT_SQL_TYPE diabaikan

Lihat Juga

Peningkatan Tanggal dan Waktu (ODBC)