Metadata - Parameter dan Hasil

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

Topik ini menjelaskan apa yang dikembalikan dalam deskriptor parameter implementasi (IPD) dan bidang deskriptor baris implementasi (IRD) untuk jenis data tanggal dan waktu.

Informasi yang Dikembalikan di Bidang IPD

Informasi berikut dikembalikan di bidang IPD:

Jenis parameter date waktu smalldatetime datetime tanggalwaktu2 tanggalwaktulewat
SQL_DESC_CASE_SENSITIVE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_CONCISE_TYPE SQL_TYPE_DATE SQL_SS_TIME2 SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_SS_TIMESTAMPOFFSET
SQL_DESC_DATETIME_INTERVAL_CODE SQL_CODE_DATE 0 SQL_CODE_TIMESTAMP SQL_CODE_TIMESTAMP SQL_CODE_TIMESTAMP 0
SQL_DESC_DATETIME_INTERVAL_PRECISION 10 8,10..16 16 23 19, 21..27 26, 28..34
SQL_DESC_FIXED_PREC_SCALE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_LENGTH 10 8,10..16 16 23 19, 21..27 26, 28..34
SQL_DESC_OCTET_LENGTH 6 12 4 8 16 20
SQL_DESC_PRECISION 0 0..7 0 3 0..7 0..7
SQL_DESC_SCALE 0 0..7 0 3 0..7 0..7
SQL_DESC_TYPE SQL_TYPE_DATE SQL_SS_TYPE_TIME2 SQL_DATETIME SQL_DATETIME SQL_DATETIME SQL_SS_TIMESTAMPOFFSET
SQL_DESC_TYPE_NAME date time smalldatetime di IRD, datetime2 di IPD tanggalwaktu dalam IRD, datetime2 di IPD datetime2 tanggalwaktulewat
SQL_CA_SS_VARIANT_TYPE SQL_C_TYPE_DATE SQL_C_TYPE_BINARY SQL_C_TYPE_TIMESTAMP SQL_C_TYPE_TIMESTAMP SQL_C_TYPE_TIMESTAMP SQL_C_TYPE_BINARY
SQL_CA_SS_VARIANT_SQL_TYPE SQL_TYPE_DATE SQL_SS_TIME2 SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_SS_TIMESTAMPOFFSET
SQL_CA_SS_SERVER_TYPE T/A T/A SQL_SS_TYPE_SMALLDATETIME SQL_SS_TYPE_DATETIME SQL_SS_TYPE_DEFAULT T/A

Terkadang ada penghentian dalam rentang nilai. Misalnya, 9 hilang di 8,10..16. Hal ini disebabkan oleh penambahan titik desimal ketika presisi pecahan lebih besar dari nol.

datetime2 dikembalikan sebagai nama tipe untuk smalldatetime dan datetime karena driver menggunakan ini sebagai jenis umum untuk mengirimkan semua nilai SQL_TYPE_TIMESTAMP ke server.

SQL_CA_SS_VARIANT_SQL_TYPE adalah bidang deskriptor baru. Bidang ini ditambahkan ke IRD dan IPD untuk memungkinkan aplikasi menentukan jenis nilai yang terkait dengan kolom dan parameter sqlvariant (SQL_SSVARIANT)

SQL_CA_SS_SERVER_TYPE adalah bidang khusus IPD baru untuk memungkinkan aplikasi mengontrol bagaimana nilai untuk parameter terikat sebagai SQL_TYPE_TYPETIMESTAMP (atau sebagai SQL_SS_VARIANT dengan jenis C SQL_C_TYPE_TIMESTAMP) dikirim ke server. Jika SQL_DESC_CONCISE_TYPE SQL_TYPE_TIMESTAMP (atau SQL_SS_VARIANT dan jenis C SQL_C_TYPE_TIMESTAMP) saat SQLExecute atau SQLExecDirect dipanggil, nilai SQL_CA_SS_SERVER_TYPE menentukan jenis aliran data tabular (TDS) dari nilai parameter, sebagai berikut:

Nilai SQL_CA_SS_SERVER_TYPE Nilai yang valid untuk SQL_DESC_PRECISION Nilai yang valid untuk SQL_DESC_LENGTH Jenis TDS
SQL_SS_TYPE_DEFAULT 0..7 19, 21..27 datetime2
SQL_SS_TYPE_SMALLDATETIME 0 19 smalldatetime
SQL_SS_TYPE_DATETIME 3 23 datetime

Pengaturan default SQL_CA_SS_SERVER_TYPE adalah SQL_SS_TYPE_DEFAULT. Pengaturan SQL_DESC_PRECISION dan SQL_DESC_LENGTH divalidasi dengan pengaturan SQL_CA_SS_SERVER_TYPE seperti yang dijelaskan dalam tabel di atas. Jika validasi ini gagal, SQL_ERROR dikembalikan dan rekaman diagnostik dicatat dengan SQLState 07006 dan pesan "Pelanggaran atribut jenis data terbatas". Kesalahan ini juga dikembalikan jika SQL_CA_SS_SERVER_TYPE diatur ke nilai selain SQL_SS_TYPE DEFAULT dan DESC_CONCISE_TYPE tidak SQL_TYPE_TIMESTAMP. Validasi ini dilakukan ketika validasi konsistensi deskriptor terjadi, misalnya:

  • Saat SQL_DESC_DATA_PTR diubah.

  • Pada waktu persiapan atau eksekusi (saat SQLExecute, SQLExecDirect, SQLSetPos, atau SQLBulkOperations dipanggil).

  • Ketika aplikasi memaksa persiapan yang tidak ditangguhkan dengan memanggil SQLPrepare dengan persiapan yang ditangguhkan dinonaktifkan, atau dengan memanggil SQLNumResultCols, SQLDescribeCol, atau SQLDescribeParam untuk pernyataan yang disiapkan tetapi tidak dijalankan.

Saat SQL_CA_SS_SERVER_TYPE diatur oleh panggilan ke SQLSetDescField, nilainya harus SQL_SS_TYPE_DEFAULT, SQL_SS_TYPE_SMALLDATETIME, atau SQL_SS_TYPE_DATETIME. Jika tidak demikian, SQL_ERROR dikembalikan dan rekaman diagnostik dicatat dengan SQLState HY092 dan pesan "Pengidentifikasi atribut/opsi tidak valid".

Atribut SQL_CA_SS_SERVER_TYPE dapat digunakan oleh aplikasi yang bergantung pada fungsionalitas yang didukung oleh datetime dan smalldatetime, tetapi bukan datetime2. Misalnya, datetime2 memerlukan penggunaan fungsi dateadd dan datediif , sedangkan datetime dan smalldatetime juga memungkinkan operator aritmatika. Sebagian besar aplikasi tidak perlu menggunakan atribut ini dan penggunaannya harus dihindari.

Informasi yang Dikembalikan di Bidang IRD

Informasi berikut dikembalikan di bidang IRD:

Jenis Kolom date waktu smalldatetime datetime tanggalwaktu2 tanggalwaktulewat
SQL_DESC_AUTO_UNIQUE_VALUE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_CASE_SENSITIVE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_CONCISE_TYPE SQL_TYPE_DATE SQL_SS_TIME2 SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_SS_TIMESTAMPOFFSET
SQL_DESC_DATETIME_INTERVAL_CODE SQL_CODE_DATE 0 SQL_CODE_TIMESTAMP SQL_CODE_TIMESTAMP SQL_CODE_TIMESTAMP 0
SQL_DESC_DATETIME_INTERVAL_PRECISION 10 8,10..16 16 23 19, 21..27 26, 28..34
SQL_DESC_DISPLAY_SIZE 10 8,10..16 16 23 19, 21..27 26, 28..34
SQL_DESC_FIXED_PREC_SCALE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_LENGTH 10 8,10..16 16 2 19, 21..27 26, 28..34
SQL_DESC_LITERAL_PREFIX ' ' ' ' ' '
SQL_DESC_LITERAL_SUFFIX ' ' ' ' ' '
SQL_DESC_LOCAL_TYPE_NAME date time smalldatetime datetime datetime2 tanggalwaktulewat
SQL_DESC_OCTET_LENGTH 6 12 4 8 16 20
SQL_DESC_PRECISION 0 0..7 0 3 0..7 0..7
SQL_DESC_SCALE 0 0..7 0 3 0..7 0..7
SQL_DESC_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE
SQL_DESC_TYPE SQL_DATETIME SQL_SS_TIME2 SQL_DATETIME SQL_DATETIME SQL_DATETIME SQL_SS_TIMESTAMPOFFSET
SQL_DESC_TYPE_NAME date time smalldatetime datetime datetime2 tanggalwaktulewat
SQL_DESC_UNSIGNED SQL_TRUE SQL_TRUE SQL_TRUE SQL_TRUE SQL_TRUE SQL_TRUE

Lihat Juga

Metadata (ODBC)