SQL ke C: Interval Waktu Siang
Pengidentifikasi untuk jenis data ODBC SQL interval waktu sehari adalah sebagai berikut:
- SQL_INTERVAL_DAY
- SQL_INTERVAL_DAY_TO_MINUTE
- SQL_INTERVAL_HOUR
- SQL_INTERVAL_DAY_TO_SECOND
- SQL_INTERVAL_MINUTE
- SQL_INTERVAL_HOUR_TO_MINUTE
- SQL_INTERVAL_SECOND
- SQL_INTERVAL_HOUR_TO_SECOND
- SQL_INTERVAL_DAY_TO_HOUR
- SQL_INTERVAL_MINUTE_TO_SECOND
Tabel berikut ini memperlihatkan tipe data ODBC C tempat data SQL interval waktu sehari dapat dikonversi. Untuk penjelasan tentang kolom dan istilah dalam tabel, lihat Mengonversi Data dari SQL ke Jenis Data C.
Pengidentifikasi tipe C | Uji | *TargetValuePtr | *StrLen_or_IndPtr | SQLSTATE |
---|---|---|---|---|
Semua jenis interval C sepanjang hari | Bagian bidang berikutnya tidak terpotong Bagian bidang berikutnya terpotong Presisi target terdepan tidak cukup besar untuk menyimpan data dari sumber |
Data Data terpotong Tidak terdefinisi |
Panjang data Panjang data Tidak terdefinisi |
n/a 01S07 22015 |
SQL_C_STINYINT[b] SQL_C_UTINYINT[b] SQL_C_USHORT SQL_C_SHORT SQL_C_SLONG[b] SQL_C_ULONG[b] SQL_C_NUMERIC[b] SQL_C_BIGINT | Presisi interval adalah bidang tunggal dan data dikonversi tanpa pemotongan Presisi interval adalah bidang tunggal dan pecahan terpotong Presisi interval adalah bidang tunggal dan utuh terpotong Presisi interval bukan bidang tunggal |
Data Data terpotong Data terpotong Tidak terdefinisi |
Ukuran tipe data C Panjang data Panjang data Ukuran tipe data C |
n/a 01S07 22003 07006 |
SQL_C_BINARY | Panjang byte data <= BufferLength Panjang byte data >BufferLength |
Data Tidak terdefinisi |
Panjang data Tidak terdefinisi |
n/a 22003 |
SQL_C_CHAR | Panjang byte karakter <BufferLength Jumlah keseluruhan (dibandingkan dengan digit <pecahan) BufferLength Jumlah digit keseluruhan (dibandingkan dengan pecahan) >= BufferLength |
Data Data terpotong Tidak terdefinisi |
Ukuran tipe data C Ukuran tipe data C Tidak terdefinisi |
n/a 01004 22003 |
SQL_C_WCHAR | Panjang karakter <BufferLength Jumlah keseluruhan (dibandingkan dengan digit <pecahan) BufferLength Jumlah digit keseluruhan (dibandingkan dengan pecahan) >= BufferLength |
Data Data terpotong Tidak terdefinisi |
Ukuran tipe data C Ukuran tipe data C Tidak terdefinisi |
n/a 01004 22003 |
[a] Jenis SQL interval waktu sehari dapat dikonversi ke jenis C interval waktu harian apa pun.
[b] Jika presisi interval adalah bidang tunggal (satu dari HARI, JAM, MENIT, atau DETIK), jenis SQL interval dapat dikonversi ke numerik yang tepat (SQL_C_STINYINT, SQL_C_UTINYINT, SQL_C_USHORT, SQL_C_SHORT, SQL_C_SLONG, SQL_C_ULONG, atau SQL_C_NUMERIC).
Konversi default jenis SQL interval adalah ke jenis data interval C yang sesuai. Aplikasi kemudian mengikat kolom atau parameter (atau mengatur bidang SQL_DESC_DATA_PTR dalam catatan ARD yang sesuai) untuk menunjuk ke struktur SQL_INTERVAL_STRUCT yang diinisialisasi (atau meneruskan penunjuk ke struktur SQL_ INTERVAL_STRUCT sebagai argumen TargetValuePtr dalam panggilan ke SQLGetData).
Contoh berikut menunjukkan cara mentransfer data dari kolom jenis SQL_INTERVAL_DAY_TO_MINUTE ke dalam struktur SQL_INTERVAL_STRUCT sehingga kembali sebagai interval DAY_TO_HOUR.
SQL_INTERVAL_STRUCT is;
SQLINTEGER cbValue;
SQLUINTEGER days, hours;
// Execute a select statement; "interval_column" is a column
// whose data type is SQL_INTERVAL_DAY_TO_MINUTE.
SQLExecDirect(hstmt, "SELECT interval_column FROM table", SQL_NTS);
// Bind
SQLBindCol(hstmt, 1, SQL_C_INTERVAL_DAY_TO_MINUTE, &is, sizeof(SQL_INTERVAL_STRUCT), &cbValue);
// Fetch
SQLFetch(hstmt);
// Process data
days = is.intval.day_second.day;
hours = is.intval.day_second.hour;