Bạn có thể truy xuất cài đặt múi giờ cho phiên MySQL hiện tại bằng câu lệnh SQL:
mysql> SELECT @@session.time_zone;
Nếu DBA chưa đặt múi giờ trên MySQL, nó sẽ mặc định thành giá trị là SYSTEM
, đại diện cho múi giờ trên hệ điều hành.
http://dev.mysql.com/doc /refman/5.5/en/time-zone-support.html
THEO DÕI:
Trong một vị từ như trong câu lệnh SQL mẫu của bạn:
select * from mytable where dt > current_ist_datetime
(đã cho dt
và current_ist_datetime
của loại dữ liệu DATETIME
) việc so sánh các giá trị sẽ độc lập với bất kỳ chuyển đổi múi giờ nào, vì không có thông tin múi giờ nào được liên kết với DATETIME
giá trị.
Nghĩa là, giá trị được trả về từ một cột kiểu dữ liệu DATETIME
không bị ảnh hưởng bởi cài đặt múi giờ của máy chủ MySQL (SELECT @@global.time_zone
) hoặc của phiên MySQL (SELECT @@session.time_zone
).
Giá trị được trả về bởi NOW()
tuy nhiên, chức năng sẽ bị ảnh hưởng bởi cài đặt múi giờ của phiên.
Để trả lại số tiền đó trong IST, hãy đảm bảo múi giờ cho phiên được chỉ định chính xác, ví dụ:
SET VARIABLES time_zone = "+05:30"
(N.B. Nếu phiên được truy xuất và trả về từ nhóm kết nối, những người dùng khác của nhóm có thể không mong đợi múi giờ khác; ...)
(LƯU Ý:phần trên hoàn toàn bỏ qua sự nhầm lẫn do trình điều khiển JDBC gây ra, gây ra bởi "sự không khớp trở kháng" (sự khác biệt) giữa việc triển khai kiểu dữ liệu DATETIME của MySQL và việc triển khai đối tượng Date của Java. Nếu bạn đang chuyển các giá trị DATETIME qua kết nối JDBC, đó là toàn bộ 'quả bóng nhầm lẫn.)