Saya percaya bahwa memanipulasi nilai string adalah solusi termudah dan paling sederhana, jadi saya akan menyajikan solusi alternatif.
Dari dokumentasi Oracle untuk tipe data INTERVAL HARI KE KEDUA
dan dari definisi kolom START_TIME
dalam pertanyaan Anda, nilai kolom tidak boleh lebih dari satu hari dan juga tidak boleh berisi pecahan detik.
Dari Oracle Dokumentasi JDBC
, tipe data INTERVAL DAY TO SECOND
memetakan ke kelas java oracle.sql.INTERVALDS
. (Ini adalah salah satu kelas dalam file JAR driver Oracle JDBC.)
Dari javadoc
kelas oracle.sql.INTERVALDS
:
Anda tahu bahwa hanya byte 4, 5 dan 6 yang relevan karena definisi kolom START_TIME
, yaitu nol hari dan nol detik pecahan. Tetapi karena Anda menulis dalam pertanyaan Anda bahwa Anda mengabaikan detik, itu berarti hanya byte 4 dan 5 yang relevan. Karenanya kode untuk mengambil nilai dari ResultSet
dan mengubahnya menjadi string dalam format yang Anda inginkan adalah:
INTERVALDS intervalDS = (INTERVALDS) rs.getObject("START_TIME");
byte[] bytes = intervalDS.toBytes();
int hour = bytes[4] - 60;
int minute = bytes[5] - 60;
String result = String.format("%02d:%02d", hour, minute);