Pertama, Anda membingungkan java.util dengan java.sql . Saat menggunakan PreparedStatement#setDate()
dan ResultSet#getDate()
, Anda memerlukan java.sql.Date
. Analog, saat menggunakan PreparedStatement#setTimestamp()
dan ResultSet#getTimestamp()
anda memerlukan java.sql.Timestamp
.
Kedua, penting untuk dipahami bahwa java.sql.Date hanya mewakili tanggal (tahun, bulan, hari) dan tidak kurang atau lebih. Ini akan dipetakan ke SQL DATE jenis lapangan. java.sql.Timestamp mewakili stempel waktu (tahun, bulan, hari, jam, menit, detik, milidetik), persis seperti java.util.Date
dan java.util.Calendar
melakukan. Ini akan dipetakan ke TIMESTAMP SQL atau DATETIME jenis bidang.
Mengenai zona waktu, Anda memerlukannya saat database tidak menyimpan informasi zona waktu (dengan demikian, semua cap waktu disimpan dalam UTC (GMT)). Anda kemudian dapat melewati Calendar yang berisi informasi tentang zona waktu saat ini, sehingga driver JDBC dapat menyesuaikan stempel waktu UTC ke stempel waktu yang sesuai dengan zona waktu. Jika misalnya GMT+1, maka driver JDBC akan menambahkan satu jam ke stempel waktu sebelum kembali.