Anda dapat mengambil pengaturan zona waktu untuk sesi MySQL saat ini dengan pernyataan SQL:
mysql> SELECT @@session.time_zone;
Jika DBA belum mengatur zona waktu di MySQL, maka defaultnya adalah SYSTEM
, yang mewakili zona waktu pada sistem operasi.
http://dev.mysql.com/doc /refman/5.5/en/time-zone-support.html
TINDAK LANJUT:
Dalam predikat seperti dalam contoh pernyataan SQL Anda:
select * from mytable where dt > current_ist_datetime
(diberikan dt
dan current_ist_datetime
dari tipe data DATETIME
)perbandingan nilai tidak bergantung pada konversi zona waktu apa pun, karena tidak ada informasi zona waktu yang terkait dengan DATETIME
nilai.
Yaitu, nilai yang dikembalikan dari kolom tipe data DATETIME
tidak terpengaruh oleh pengaturan zona waktu server MySQL (SELECT @@global.time_zone
) atau sesi MySQL (SELECT @@session.time_zone
).
Nilai yang dikembalikan oleh NOW()
fungsi, bagaimanapun, akan dipengaruhi oleh pengaturan zona waktu sesi.
Untuk mengembalikannya di IST, pastikan zona waktu untuk sesi ditentukan dengan benar, mis.
SET VARIABLES time_zone = "+05:30"
(N.B. Jika sesi diambil dari dan dikembalikan dari kumpulan koneksi, pengguna kumpulan lainnya mungkin tidak mengharapkan zona waktu yang berbeda;...)
(CATATAN:di atas sepenuhnya mengabaikan kebingungan yang diperkenalkan oleh driver JDBC, yang disebabkan oleh "ketidakcocokan impedansi" (perbedaan) antara implementasi tipe data DATETIME MySQL, dan implementasi Java objek Date. Jika Anda melewatkan nilai DATETIME melalui koneksi JDBC, itu benar-benar 'bola kebingungan lainnya.)