Jen*_*rom 15 migration django postgresql timezone datetime
我是否需要将Postgres中的所有现有日期时间从当前时区转换为UTC,或者Django 1.4时区在读取非UTC时(但保存为UTC时)时会理解.
我有一个完美的工作Django 1.3/Postgres网站,我处理多个时区.我正在存储所有日期时间w.时区信息,但这恰好设置为Postgres中的美国/东部时区(是的,我知道应该是UTC).
现在,我计划升级到Django 1.4并计划在那里使用Django时区支持.根据我的理解,它会将UTC中的所有日期时间保存到数据库,这很好,但是我现有的所有信息都设置了时区而不是UTC.
有没有人根据这个迁移,它是如何工作的,感觉就像我没有任何问题或者我需要迁移大量的日期时间数据.
Erw*_*ter 18
我正在存储所有日期时间w.时区信息,但这恰好设置为Postgres中的美国/东部时区(是的,我知道应该是UTC).
这里有一些误解.
timestamp
在PostgreSQL中调用数据类型.没有称为"datetime"的类型.
timestamp
是的缩写timestamp without time zone
.
timestamptz
是的缩写timestamp with time zone
.
手册通知:
timestamp
值存储为2000-01-01午夜之前或之后的秒数.
类似于Posix时间,它起源于30年前的Unix纪元 1970-01-01 00:00 UTC.因为timestamp
,假设当地 2000-01-01 00:00
.对于timestamptz
参考是2000-01-01 00:00 UTC
和值,调整输入和输出的时区偏移.
timestamp with time zone
只是输入和表示一个独特时间点的另一种方式.您不能在内部"设置"时间戳(有或没有时区)到UTC之外的任何其他时区.根本不保存时区偏移本身.它仅用于将值调整为UTC.
时间戳值的表示将考虑当前时区设置
timestamp without time zone
(输入).的好消息:您的迁移应该只是工作开箱即用-只要你不搞砸积极.
我已经详细解释了Postgres时间戳如何使用这个相关答案中的示例和链接.
请尝试以下语句(一次一个块).并尝试使用您的专栏:
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;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6052 次 |
最近记录: |