当前位置: 首页 > 知识库问答 >
问题:

迁移日期时间w。PostgreSQL中的时区转换为UTC时区以使用Django 1.4

薛高澹
2023-03-14

我是否需要将Postgres中所有现有的日期时间从当前时区转换为UTC,或者当读取不是UTC的东西时,Django 1.4时区是否会理解(但随后保存为UTC)。

我有一个非常好的Django 1.3/Postgres网站,可以处理多个时区。我正在存储所有datetime w。时区信息,但在Postgres中这恰好设置为美国/东部时区(是的,我知道应该是UTC)。

现在,我计划升级到Django 1.4,并计划在那里使用Django时区支持。据我所知,它会将UTC中的所有datetime保存到数据库中,这很好,但我的所有现有信息(时区已设置但未设置为UTC)又如何呢。

有没有人根据这个迁移,它是如何工作的,感觉要么我一点问题都没有,要么我需要迁移大量的日期时间数据。

共有1个答案

子车鸿运
2023-03-14

我正在存储所有datetime w。时区信息,但在Postgres中这恰好设置为美国/东部时区(是的,我知道应该是UTC)。

这里有一些误解。

在PostgreSQL中,数据类型称为timemark。没有被称为datetime的类型。
时间戳不带时区的时间戳的缩写。
时间戳带时区的时间戳的缩写。

如手册所述:

时间戳值存储为2000-01-01午夜前后的秒。

与Posix时间类似,Posix时间比Unix纪元1970-01-01 00:00 UTC早30年。对于时间戳,假定本地2000-01-01 00:00。对于timestamtz而言,参考值为2000-01-01 00:00 UTC,并根据当前会话在输入和输出时的时区偏移量调整显示。

带时区的时间戳存储唯一的时间点。您不能在内部将时间戳(带或不带时区)设置为UTC以外的任何其他时区。时区偏移本身根本不保存。它仅用于将输入/输出调整为UTC。

时间戳值的表示将当前会话的时区设置考虑在内。

  • 相应地显示值(输出)。
  • 正确解释不带时区的时间戳(输入)

好消息是:你的迁移应该开箱即用——只要你不主动搞砸。

详细解释Postgres如何使用示例和链接标记时间:

  • 在Rails和PostgreSQL中完全忽略时区

尝试以下语句(一次一个块)。在你的专栏里也试试:

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;
 类似资料:
  • 问题内容: 这是我的约会日期“ 15-05-2014 00:00:00” 如何将IST转换为UTC即(到14-05-2014 18:30:00) 基于时区到UTC时区。 我的代码是 如果用户从任何区域输入相同的日期,则将获得UTC时间(例如:从澳大利亚,然后从15-05-2014 00:00:00到14-05-2014 16:00:00) 请任何建议。 问题答案: 您不能将日期值“转换为”其他时区

  • > 如何将IST转换为UTC,即(至2014年5月14日18:30:00) 我的代码是 > 如果用户从任何区域输入相同的日期,则将获得UTC时间(例如:从澳大利亚输入,然后是2014年5月15日00:00:00至2014年5月14日16:00:00) 请提出任何建议。

  • 问题内容: 为您准备的头抓板。 我正在从IPInfoDB的API中获取地理IP数据,它从UTC返回 包括 DST 的时区偏移(如果当前已反映)。 例如,我住在EST(-5),目前是DST,因此geo IP API返回()作为偏移量。 因为DST令人头疼,所以这太好了。但是令我惊讶的是,它又引起了头疼。 我将此数据加载到PHP中,以通过AJAX传递给应用程序。我想在应用程序上获取IP地址的实时本地时

  • 我是PostgreSQL的新手,我想知道是否有一种直接的方法可以使用函数将表中的时间戳值转换为不同的时区。在我的情况下,是UTC到EST。 例如,我需要将这些值转换为EST(不仅仅是一个值,而是表中的所有值)

  • 问题内容: 如何将这样的日期(在时区中)转换为时区?确保夏令时能正确处理? 问题答案: 使用和。

  • 问题内容: 我从我的API获取此日期字符串: 但是此日期为UTC格式,我想将其转换为当地时间,该怎么办? 我尝试了这个: 但是它返回了这个错误: 问题答案: 您的日期格式模式错误。改成: 有关更多信息,请参见SimpleDateFormat的javadoc。