Você pode recuperar a configuração de fuso horário para a sessão atual do MySQL com uma instrução SQL:
mysql> SELECT @@session.time_zone;
Se o DBA não tiver definido o fuso horário no MySQL, o valor padrão será
SYSTEM
, que representa o fuso horário no sistema operacional. http://dev.mysql.com/doc /refman/5.5/en/time-zone-support.html
ACOMPANHAMENTO:
Em um predicado como em sua instrução SQL de exemplo:
select * from mytable where dt > current_ist_datetime
(dado
dt
e current_ist_datetime
do tipo de dados DATETIME
) a comparação dos valores será independente de qualquer conversão de fuso horário, pois não há informações de fuso horário associadas a um DATETIME
valor. Ou seja, o valor retornado de uma coluna do tipo de dados
DATETIME
não é afetado pela configuração time_zone do servidor MySQL (SELECT @@global.time_zone
) ou da sessão MySQL (SELECT @@session.time_zone
). O valor retornado pelo
NOW()
A função, no entanto, será afetada pela configuração time_zone da sessão. Para obter isso retornado em IST, certifique-se de que o time_zone da sessão seja especificado corretamente, por exemplo
SET VARIABLES time_zone = "+05:30"
(N.B. Se a sessão for recuperada e retornada de um pool de conexões, os outros usuários do pool podem não estar esperando um fuso horário diferente;...)
(NOTA:o acima ignora inteiramente a confusão introduzida pelo driver JDBC, causada pela "incompatibilidade de impedância" (diferenças) entre a implementação do MySQL do tipo de dados DATETIME e a implementação Java do objeto Date. Se você estiver passando valores DATETIME em uma conexão JDBC, isso é outra bola de confusão.)