Изменение часового пояса в существующем проекте Django

Как идиот, я полностью упустил из виду настройку часового пояса, когда впервые создал приложение, которое собирает данные datetime.

Тогда это не было проблемой, потому что все, что я делал, было сравнением стилей и упорядочиванием «прошедшего времени». Теперь мне нужно сделать полные отчеты, которые показывают фактическое время и дату, и, конечно же, все они хранятся в Америке / Чикаго (смехотворное значение по умолчанию в Django).

Так да. У меня есть база данных среднего размера, полная этих неверных дат. Я хочу изменить settings.TIME_ZONE на 'UTC', но это не помогает моим существующим данным.

Какой лучший (читай: самый простой и быстрый) способ конвертировать все данные модели в массовом порядке?

(Все данные за последние два месяца, поэтому, к счастью, нет DST для преобразования)

Этот проект в настоящее время находится на SQLite, но у меня есть еще один проект на PostgreSQL с аналогичной проблемой, и я, возможно, захочу сделать то же самое до того, как сработает DST ... Так что в идеале ответ, не зависящий от БД.


person Oli    schedule 27.03.2009    source источник
comment
Какую базу данных вы используете, кстати?   -  person Jarret Hardie    schedule 27.03.2009
comment
SQLite, но вполне возможно, что я захочу сделать то же самое в другом проекте, для которого я использовал Postgres ... Что-то, что не зависит от БД, было бы идеально =)   -  person Oli    schedule 27.03.2009
comment
SQLite хранит все как текст. Однако некоторые базы данных хранят дату и время в формате UTC внутри себя. Oracle, например, переводит UTC в базе данных в местное время. Вам не нужно ничего обновлять, чтобы изменить отображаемое местное время.   -  person S.Lott    schedule 27.03.2009


Ответы (1)


Я бы сделал массовое обновление таблиц базы данных, добавляя или вычитая часы в / из полей даты и времени.

Что-то вроде этого работает в SQL Server и добавляет 2 часа к дате:

update tblName set date_field = dateadd("hh", 2, data_field)
person Jason Coon    schedule 27.03.2009