2011-10-09 21 views
10

En mi base de datos Mysql 5.0 tengo una columna para controlar la información de última actualización. The Column es un TimeStamp uno y los datos de actualizaciones automáticas de MySql.MySql - SELECCIONAR columna TimeStamp en formato UTC

Estoy tratando de seleccionar esta columna en formato UTC.

El problema es que el servidor está configurado para datetime en los Estados Unidos. De acuerdo con la documentación de MySql, el DB almacena la información en UTC, pero cuando quiero mostrar información, la convierte a la hora del servidor.

¿Hay alguna manera de hacer el comando SELECCIONAR evitando esta conversión?

+0

posible duplicado de [cómo configurar la zona horaria de MySQL?] (Http://stackoverflow.com/questions/930900/how-to-set-timezone- of-mysql) – Evert

Respuesta

6

Además de cambiar la zona horaria predeterminada del servidor, la zona horaria también se puede ajustar por conexión mediante la ejecución de esta sentencia SQL:

SET time_zone = timezone; 

Dónde zona horaria es el nombre de la zona horaria (see MySQL docs).

Alternativamente, también puede convertir una marca de tiempo en una zona horaria diferente utilizando el CONVERT_TZ function.

23
SELECT 
CONVERT_TZ(`timestamp_field`, @@session.time_zone, '+00:00') AS `utc_datetime` 
FROM `table_name` 

hice un cheatsheet aquí: Should MySQL have its timezone set to UTC?

+0

esta es realmente la mejor respuesta. no importa qué sea @@ session.time_zone y le permite seleccionar algunas columnas en UTC y algunas en la sesión time_zone. La misma técnica se puede utilizar para seleccionar como zona horaria del usuario, si tiene la compensación para ello. –

+0

NOTA: si la sesión time_zone está sujeta a ajustes de horario de verano, p. CST6CDT, la hora en que el reloj "retrocede" será ambigua. – spencer7593

Cuestiones relacionadas