Можете да извлечете настройката на часовата зона за текущата MySQL сесия с SQL оператор:
mysql> SELECT @@session.time_zone;
Ако DBA не е задал часовата зона на MySQL, по подразбиране ще бъде зададена стойност SYSTEM
, което представлява часовата зона на операционната система.
http://dev.mysql.com/doc /refman/5.5/en/time-zone-support.html
ПОСЛЕДВАНЕ:
В предикат като във вашия примерен SQL оператор:
select * from mytable where dt > current_ist_datetime
(предвид dt
и current_ist_datetime
от тип данни DATETIME
)сравняването на стойностите ще бъде независимо от всяко преобразуване на часова зона, тъй като няма информация за часова зона, свързана с DATETIME
стойност.
Тоест стойността, върната от колона от тип данни DATETIME
не се влияе от настройката time_zone на MySQL сървъра (SELECT @@global.time_zone
) или на MySQL сесията (SELECT @@session.time_zone
).
Стойността, върната от NOW()
функцията обаче ще бъде повлияна от настройката time_zone на сесията.
За да получите това върнато в IST, уверете се, че time_zone за сесията е зададена правилно, напр.
SET VARIABLES time_zone = "+05:30"
(N.B. Ако сесията е извлечена от и върната от набор от връзки, другите потребители на набора може да не очакват различна time_zone;...)
(ЗАБЕЛЕЖКА:горното напълно пренебрегва объркването, въведено от JDBC драйвера, причинено от "несъответствието на импеданса" (разлики) между изпълнението на MySQL на типа данни DATETIME и изпълнението на Java на обект Date. Ако предавате стойности на DATETIME през JDBC връзка, това вече не е объркване.)