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

MySQL CONVERT_TZ()

Si esto arroja un valor nulo, las tablas TZ no se han configurado:

SELECT CONVERT_TZ(now(),'US/Eastern','US/Central');

Si no tiene configuradas las tablas de zona horaria, puede actualizar el desplazamiento de hora en la tabla de usuario y luego hacer:

select utc_timezone() - interval user_timezone_offset_in_hours hour
from userinfo a
where user_id = 999;

Sin embargo, aún necesitaría una forma de actualizar la zona horaria del usuario.

Si está escribiendo esto para una aplicación web, puede obtener la zona horaria a través de javascript, aquí hay un artículo que describe cómo (no he probado esto pero parece que funcionará).

Un poco de explicación con respecto al 'intervalo' anterior...

Una de las construcciones más engañosas en MySQL es el uso de INTERVAL palabra clave, se muestra mejor con el ejemplo (el valor numérico puede ser una expresión o el valor del campo)

select now() today, now() - interval 1 day yesterday;
+---------------------+---------------------+
| today               | yesterday           |
+---------------------+---------------------+
| 2011-05-26 13:20:55 | 2011-05-25 13:20:55 |
+---------------------+---------------------+

Puedes sumarlas y restarlas como quieras, es por eso que nunca molestarse con las funciones de fecha/hora agregar/restar/convertir

select now() a, now() - interval 1 day + interval 4 hour + interval 8 minute b;
+---------------------+---------------------+
| a                   | b                   |
+---------------------+---------------------+
| 2011-05-26 13:24:16 | 2011-05-25 17:32:16 |
+---------------------+---------------------+

Puede usar números negativos (debería ser bueno para las compensaciones de zona horaria negativa) estos son los mismos:

select now() - interval 1 month a, now() + interval -1 month b;
+---------------------+---------------------+
| a                   | b                   |
+---------------------+---------------------+
| 2011-04-26 13:38:05 | 2011-04-26 13:38:05 |
+---------------------+---------------------+