C ke SQL: Interval Waktu Siang
Pengidentifikasi untuk jenis data ODBC C interval waktu sehari adalah:
SQL_C_INTERVAL_DAY
SQL_C_INTERVAL_HOUR
SQL_C_INTERVAL_MINUTE
SQL_C_INTERVAL_SECOND
SQL_C_INTERVAL_DAY_TO_HOUR
SQL_C_INTERVAL_DAY_TO_MINUTE
SQL_C_INTERVAL_DAY_TO_SECOND
SQL_C_INTERVAL_HOUR_TO_MINUTE
SQL_C_INTERVAL_HOUR_TO_SECOND
SQL_C_INTERVAL_MINUTE_TO_SECOND
Tabel berikut ini memperlihatkan tipe data ODBC SQL tempat data C interval dapat dikonversi. Untuk penjelasan tentang kolom dan istilah dalam tabel, lihat Mengonversi Data dari C ke Jenis Data SQL.
Pengidentifikasi jenis SQL | Uji | SQLSTATE |
---|---|---|
SQL_CHAR[a] SQL_VARCHAR[a] SQL_LONGVARCHAR[a] |
Panjang byte kolom >= Panjang byte karakter Panjang < byte kolom Panjang byte karakter[a] Nilai data bukan literal interval yang valid |
n/a 22001 22015 |
SQL_WCHAR[a] SQL_WVARCHAR[a] SQL_WLONGVARCHAR[a] |
Panjang >karakter kolom = Panjang karakter data Panjang < karakter kolom Panjang karakter data[a] Nilai data bukan literal interval yang valid |
n/a 22001 22015 |
SQL_TINYINT[b] SQL_SMALLINT[b] SQL_INTEGER[b] SQL_BIGINT[b] SQL_NUMERIC[b] SQL_DECIMAL[b] |
Konversi interval bidang tunggal tidak menghasilkan pemotongan seluruh digit Konversi menghasilkan pemotongan seluruh digit |
n/a 22003 |
SQL_INTERVAL_DAY SQL_INTERVAL_HOUR SQL_INTERVAL_MINUTE SQL_INTERVAL_SECOND SQL_INTERVAL_DAY_TO_HOUR SQL_INTERVAL_DAY_TO_MINUTE SQL_INTERVAL_DAY_TO_SECOND SQL_INTERVAL_HOUR_TO_MINUTE SQL_INTERVAL_HOUR_TO_SECOND SQL_INTERVAL_MINUTE_TO_SECOND |
Nilai data dikonversi tanpa pemotongan bidang apa pun Satu atau beberapa bidang nilai data dipotong selama konversi |
n/a 22015 |
[a] Semua jenis data interval C dapat dikonversi ke jenis data karakter.
[b] Jika bidang jenis dalam struktur interval sedih sehingga interval adalah bidang tunggal (SQL_DAY, SQL_HOUR, SQL_MINUTE, atau SQL_SECOND), jenis interval C dapat dikonversi ke numerik yang tepat (SQL_TINYINT, SQL_SMALLINT, SQL_INTEGER, SQL_BIGINT, SQL_DECIMAL, atau SQL_NUMERIC).
Konversi default dari jenis interval C adalah ke jenis SQL interval waktu hari yang sesuai.
Driver mengabaikan nilai panjang/indikator saat mengonversi data dari jenis data C interval dan mengasumsikan bahwa ukuran buffer data adalah ukuran jenis data C interval. Nilai panjang/indikator diteruskan dalam argumen StrLen_or_Ind di SQLPutData dan dalam buffer yang ditentukan dengan argumen StrLen_or_IndPtr di SQLBindParameter. Buffer data ditentukan dengan argumen DataPtr di SQLPutData dan argumen ParameterValuePtr di SQLBindParameter.
Contoh berikut menunjukkan cara mengirim data C interval yang disimpan dalam struktur SQL_INTERVAL_STRUCT ke dalam kolom database. Struktur interval berisi interval DAY_TO_SECOND; ini akan disimpan dalam kolom database jenis SQL_INTERVAL_DAY_TO_MINUTE.
SQL_INTERVAL_STRUCT is;
SQLINTEGER cbValue;
// Initialize the interval struct to contain the DAY_TO_SECOND
// interval "154 days, 22 hours, 44 minutes, and 10 seconds"
is.intval.day_second.day = 154;
is.intval.day_second.hour = 22;
is.intval.day_second.minute = 44;
is.intval.day_second.second = 10;
is.interval_sign = SQL_FALSE;
// Bind the dynamic parameter
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_INTERVAL_DAY_TO_SECOND,
SQL_INTERVAL_DAY_TO_MINUTE, 0, 0, &is,
sizeof(SQL_INTERVAL_STRUCT), &cbValue);
// Execute an insert statement; "interval_column" is a column
// whose data type is SQL_INTERVAL_DAY_TO_MINUTE.
SQLExecDirect(hstmt,"INSERT INTO table(interval_column) VALUES (?)",SQL_NTS);