Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Usando o tempo IST na consulta mysql


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.)