Mengonfigurasi bagaimana nilai java.sql.Time dikirim
Jika Anda menggunakan objek java.sql.Time atau jenis JDBC java.sql.Type.TIME untuk mengatur parameter, Anda dapat mengonfigurasi bagaimana nilai java.sql.Time dikirim ke server; baik sebagai jenis waktu SQL Server atau sebagai jenis tanggalwaktu.
Skenario ini berlaku saat menggunakan salah satu metode berikut:
- SQLServerCallableStatement.registerOutParameter(int, int)
- SQLServerCallableStatement.registerOutParameter(int, int, int)
- SQLServerCallableStatement.setTime
- SQLServerPreparedStatement.setTime
- SQLServerCallableStatement.setObject
- SQLServerPreparedStatement.setObject
SendTimeAsDatetime
Anda dapat mengonfigurasi bagaimana nilai java.sql.Time dikirim dengan menggunakan properti koneksi sendTimeAsDatetime . Untuk informasi selengkapnya, lihat Mengatur Properti Koneksi.
Anda dapat memodifikasi nilai properti koneksi sendTimeAsDatetime secara terprogram dengan SQLServerDataSource.setSendTimeAsDatetime.
Versi SQL Server yang lebih lama dari SQL Server 2008 (10.0.x) tidak mendukung jenis data waktu , sehingga aplikasi yang menggunakan java.sql.Time biasanya menyimpan nilai java.sql.Time baik sebagai jenis data SQL Server tanggalwaktu atau smalldatetime .
Jika Anda ingin menggunakan jenis data datetime dan smalldatetimeSQL Server saat bekerja dengan nilai java.sql.Time, Anda harus mengatur properti koneksi sendTimeAsDatetime ke true. Jika Anda ingin menggunakan jenis data SQL Server waktu saat bekerja dengan nilai java.sql.Time, Anda harus mengatur properti koneksi sendTimeAsDatetime ke false.
Mengirim nilai java.sql.Time ke dalam parameter yang jenis datanya juga dapat menyimpan tanggal, bahwa tanggal default berbeda tergantung pada apakah nilai java.sql.Time dikirim sebagai nilai datetime (1/1/1970) atau waktu (1/1/1900). Untuk informasi selengkapnya tentang konversi data saat mengirim data ke SQL Server, lihat Menggunakan Data Tanggal dan Waktu.
Di Driver JDBC SQL Server 3.0, sendTimeAsDatetime adalah true secara default. Dalam rilis mendatang, properti koneksi sendTimeAsDatetime dapat diatur ke false secara default.
Untuk memastikan bahwa aplikasi Anda terus berfungsi seperti yang diharapkan terlepas dari nilai default properti koneksi sendTimeAsDatetime , Anda dapat:
- Gunakan java.sql.Time saat bekerja dengan jenis data SQL Server waktu.
- Gunakan java.sql.Timestamp saat bekerja dengan jenis data datetime, smalldatetime, dan datetime2SQL Server.
SendTimeAsDatetime harus false untuk kolom terenkripsi karena kolom terenkripsi tidak mendukung konversi dari waktu ke tanggalwaktu. Dimulai dengan Microsoft JDBC Driver 6.0 untuk SQL Server, kelas SQLServerConnection memiliki dua metode berikut untuk mengatur/mendapatkan nilai properti sendTimeAsDatetime.
public boolean getSendTimeAsDatetime()
public void setSendTimeAsDatetime(boolean sendTimeAsDateTimeValue)