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

Cómo configurar la zona horaria de la base de datos para una instancia de AWS RDS

Antes del resto de mi respuesta, me gustaría recomendar ahora que si tiene alguna opción para cambiar su aplicación para usar UTC, le ahorrará muchos dolores de cabeza ahora y en el futuro.

Sin embargo, dado el contexto de su pregunta, asumo que esta no es una opción y que está adaptando un sistema diseñado para usar MySQL en un entorno de servidor tradicional donde puede cambiar la zona horaria, y que hay una lógica de código que espera esta zona horaria y no se puede adaptar fácilmente para usar UTC.

Pero si realmente necesita almacenarlo como PST, siga leyendo.

Tiene razón en que mySql usará la zona horaria del servidor para el almacenamiento de marcas de tiempo de forma predeterminada, sin embargo, su suposición de que las instancias de RDS tienen sus zonas horarias establecidas en función de la región de AWS en la que se lanzan es incorrecta - todas las instancias de RDS se inician con su zona horaria establecida como UTC, y esta configuración puede no se puede cambiar:

Por lo tanto, su única opción es establecer la zona horaria en cada conexión que realiza su aplicación a la instancia de la base de datos a PST. Puede usar SET SESSION time_zone = 'PST' consulta para ejecutar en cada conexión que hace una aplicación siguiendo los dos pasos que se encuentran aquí :

  1. Cree el siguiente procedimiento almacenado (UTC-8 es PST):

  2. Conéctese a su instancia y ejecute el siguiente comando:

  3. Es posible que deba otorgar EXECUTE permisos a los usuarios que se conectarán a la base de datos, de lo contrario, puede obtener un error de conexión:

Ahora, cada consulta ejecutada en su instancia de RDS por cualquier cliente debe usar PST sin modificar la lógica de la aplicación y sin necesidad de actualizar las marcas de tiempo almacenadas previamente en la base de datos.