2011-11-28 9 views
5

¿Hay MySQL equivalente al TIMESTAMP de Oracle WITH TIME ZONE?¿Hay MySQL equivalente al TIMESTAMP de Oracle CON HUSO HORARIO?

Necesito mapear una tabla de Oracle, que tiene algunas columnas con ese tipo de datos, en una tabla MySQL, pero parece que no puedo encontrar una manera fácil de hacerlo sin recurrir a algunas funciones de MySQL.

Gracias y saludos cordiales.

+0

La respuesta corta es no, creo. Hay planes para agregar dichos tipos de datos en la versión futura de MariaDB (una bifurcación de MySQL) pero ninguna idea en un horario. –

+0

Planes para MariaDB 5.6: http://kb.askmonty.org/en/plans-for-56 –

Respuesta

2

No, deberá dividir los datos en 2 columnas, una a fecha y hora, y la otra con la información de la zona horaria. Pero lo que pone en el último campo depende de lo que haya almacenado en Oracle: el tipo de datos TIMESTAMP WITH TIME ZONE puede contener el desplazamiento TZ y (opcionalmente) la región de zona horaria. Obviamente, este último es un requisito para que el tiempo de la fecha sea semánticamente correcto, pero IIRC Oracle no exige que se llenen estos datos.

sin tener que recurrir a algunas funciones de MySQL

Desde MySQL no tiene el tipo de datos, va a ser muy difícil de escribir la función de MySQL para procesarlo - es mucho más simple para crear un compatibles MySQL representación en Oracle donde se admite el tipo de datos. Solo necesita averiguar qué datos tiene realmente y decidir cómo quiere representarlos en MySQL. Por convención eso significa almacenarlo en UTC junto con el TZ en una columna separada, luego convertirlo en la selección con la función convert_tz (siempre desde UTC)

1

MySQL siempre almacena timestamps as utc. Las fechas siempre se almacenan sin información de zona horaria.

Puede configurar mysql para devolver valores desde now() en diferentes timezones.

Para almacenar el desplazamiento actual, necesita agregarlo a alguna columna por su cuenta.

Cuestiones relacionadas