【问题标题】:Changing timezone on an existing Django project更改现有 Django 项目的时区
【发布时间】:2010-10-15 22:42:26
【问题描述】:

像个白痴一样,当我第一次构建收集日期时间数据的应用程序时,我完全忽略了时区设置。

那时这不是问题,因为我所做的只是“时间以来”的风格比较和排序。现在我需要做完整的报告来显示实际的日期时间,当然,它们都存储在 America/Chicago(可笑的 Django 默认)。

所以是的。我有一个中型数据库,里面全是这些不正确的日期。我想将 settings.TIME_ZONE 更改为 'UTC' 但这对我现有的数据没有帮助。

将所有模型数据整体转换的最佳(阅读:最简单、最快)方法是什么?

(所有数据都是过去两个月内的数据,所以还好没有夏令时转换)

这个项目目前在 SQLite 上,但我在 PostgreSQL 上有另一个项目,有一个类似的问题,我可能想在 DST 开始之前做同样的事情......所以理想情况下是一个与 DB 无关的答案。

【问题讨论】:

  • 顺便说一句,您使用的是什么数据库?
  • SQLite 但完全有可能我想在另一个我使用 Postgres 的项目上做同样的事情......与 DB 无关的东西是理想的 =)
  • SQLite 将所有内容存储为文本。然而,一些数据库在内部以 UTC 存储日期时间。例如,Oracle 将数据库中的 UTC 转换为本地时间。您无需更新任何内容即可更改显示的本地时间。

标签: python django timezone database-agnostic pytz


【解决方案1】:

我会通过在日期时间字段中添加或减去小时数来对数据库表进行大规模更新。

这样的事情在 SQL Server 中有效,并且将日期增加了 2 小时:

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

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 2019-01-16
    • 2019-06-28
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 2020-03-09
    相关资源
    最近更新 更多