sql >> Base de Datos >  >> RDS >> Mysql

Usando el tiempo IST en la consulta mysql

Puede recuperar la configuración de la zona horaria para la sesión actual de MySQL con una instrucción SQL:

mysql> SELECT @@session.time_zone;

Si el DBA no ha configurado la zona horaria en MySQL, se establecerá de forma predeterminada en un valor de SYSTEM , que representa la zona horaria del sistema operativo.

http://dev.mysql.com/doc /refman/5.5/en/time-zone-support.html

SEGUIMIENTO:

En un predicado como en su declaración SQL de ejemplo:

select * from mytable where dt > current_ist_datetime

(dado dt y current_ist_datetime del tipo de datos DATETIME ) la comparación de los valores será independiente de cualquier conversión de zona horaria, ya que no hay información de zona horaria asociada con un DATETIME valor.

Es decir, el valor devuelto por una columna de tipo de datos DATETIME no se ve afectado por la configuración de la zona horaria del servidor MySQL (SELECT @@global.time_zone ) o de la sesión MySQL (SELECT @@session.time_zone ).

El valor devuelto por NOW() Sin embargo, la función se verá afectada por la configuración de la zona horaria de la sesión.

Para que se devuelva en IST, asegúrese de que la zona horaria de la sesión se haya especificado correctamente, por ejemplo,

SET VARIABLES time_zone = "+05:30"

(N.B. Si la sesión se recupera y se devuelve desde un grupo de conexiones, es posible que los otros usuarios del grupo no esperen una zona_horaria diferente;...)

(NOTA:lo anterior ignora por completo la confusión introducida por el controlador JDBC, causada por la "falta de coincidencia de impedancia" (diferencias) entre la implementación de MySQL del tipo de datos DATETIME y la implementación de Java del objeto Date. Si está pasando valores DATETIME a través de una conexión JDBC, eso es toda 'otra bola de confusión.)