迁移datetime w.时区在PostgreSQL到UTC时区使用Django 1.4
我需要将Postgres中的所有现有日期时间从当前时区转换为UTC,否则Django 1.4时区在读取不是UTC的东西时可以理解(但是另存为UTC).
我有一个完美的和工作的Django 1.3 / Postgres网站,我处理多个时区.我正在存储所有的datetime w.时区信息,但这恰好设置为美国/东部时区(是的,我知道应该是UTC)在Postgres. 现在,我计划升级到Django 1.4,并计划在那里使用Django时区支持.从我的理解,它将保存UTC中的所有datetime到数据库,这很好,但是我所有现有的信息时区设置,但不是UTC. 有没有人根据这个迁移,它是如何工作的,感觉就像我没有任何问题,或者我需要迁移大量的datetime数据.
这里有几个误解. 数据类型在PostgreSQL中称为时间戳.没有名为“datetime”的类型. 手册通知:
类似于Posix时间,从Unix epoch 1970-01-01 00:00 UTC开始的30年前.对于时间戳,假定本地2000-01-01 00:00.对于timestamptz,参考号为2000-01-01 00:00 UTC,并根据输入和输出对时区偏移量进行调整. 带有时区的时间戳只是另一种输入和表示唯一时间点的方式.您不能将时间戳(带或不带时区)“设置为任何其他时区(UTC).时区偏移本身根本不保存.它只用于将值调整为UTC. 时间戳值的表示将考虑当前时区设置 >相应地显示值(输出) 好消息:您的移民工作应该刚刚开箱即用,只要您不要积极地搞砸. 我已经详细说明了Postgres时间戳如何在this related answer中使用示例和链接. 示例查询 尝试以下语句(一次一个块).也可以用你的专栏: SHOW timezone; SELECT '2011-05-24 11:17:11.533479-05'::timestamptz(0); SELECT '2011-05-24 11:17:11-05'::timestamptz; SET timezone='UTC'; SELECT '2011-05-24 11:17-05'::timestamptz; SELECT '2011-05-24 11:17-05'::timestamptz AT TIME ZONE 'UTC'; SELECT '2011-05-24 11:17-05'::timestamptz AT TIME ZONE 'UTC' AT TIME ZONE 'UTC'; RESET timezone; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |