2009-03-27 13 views
5

Como un idiota, pasé por alto por completo la configuración de la zona horaria cuando construí por primera vez una aplicación que recopila datos de fecha y hora.Cambiar la zona horaria en un proyecto de Django existente

No fue un problema, porque todo lo que hacía era comparaciones y pedidos de estilo "time-since". Ahora necesito hacer informes completos que muestren la fecha actual y, por supuesto, están almacenados en América/Chicago (el ridículo Django predeterminado).

Así que sí. Tengo una base de datos de tamaño mediano llena de estas fechas que son incorrectas. Quiero cambiar settings.TIME_ZONE a 'UTC' pero eso no ayuda mis datos existentes.

¿Cuál es la mejor forma (más fácil, más rápida) de convertir todos los datos del modelo en masa?

(todos los datos están dentro de los últimos dos meses, por lo que hay afortunadamente sin horario de verano para convertir)

Este proyecto se encuentra actualmente en SQLite, pero tengo otro proyecto en PostgreSQL con un problema similar que puede ser que quiera haz lo mismo antes de que comience el horario de verano ... Así que, idealmente, una respuesta independiente de DB.

+0

Qué base de datos se está utilizando, por cierto? –

+0

SQLite pero es muy posible que desee hacer lo mismo en otro proyecto que utilicé Postgres para ... Algo DB-agnóstico sería ideal =) – Oli

+1

SQLite almacena todo como texto. Algunas bases de datos, sin embargo, almacenan la fecha y hora en UTC internamente. Oracle, por ejemplo, traduce el UTC en la base de datos a localtime. No tiene que actualizar nada para cambiar el tiempo local mostrado. –

Respuesta

3

Haría una actualización masiva de las tablas de la base de datos agregando o restando horas a/desde los campos de fecha y hora.

Algo como esto funciona en SQL Server, y agrega 2 horas a la fecha:

update tblName set date_field = dateadd("hh", 2, data_field) 
Cuestiones relacionadas