Bagikan melalui


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;