每当我运行某种数据库操作(IE update_attributes、save等)时,时间戳都是UTC



运行时:

psql great_dev -c 'show timezone'

返回以下内容:

TimeZone  
------------
US/Eastern
(1 row)

我希望时区是美国东部时间,所以我认为这是正确的。问题是,每当我运行某种数据库操作(IE update_attributes、save等)时,时间戳都是UTC格式,如下所示:

SQL (0.6ms)  UPDATE "schedules" SET "accepted" = $1, "updated_at" = $2 WHERE 
 "schedules"."id" = 46  [["accepted", "only_freelancer"], 
 ["updated_at", Mon, 02 Dec 2013 16:51:07 UTC +00:00]]

我开始执行一些后台工作,了解Postgres所在的时区是至关重要的。

  1. 研究生是在EST还是在UST
  2. 如果它在UST中,我如何将其转换为EST?这样做是否危险
  3. 我将允许用户从选择菜单中输入时间戳-菜单应该列出UTC时间还是EST时间

Postgres中默认的timestamp类型为timestamp without time zone
要处理此问题,请使用timestamp with time zone数据类型。

或者将时区设置为UTC并使用timestamp [without time zone]运行数据库。请注意,会话的时区设置与Postgres为您的查询实际返回的内容有关。

此相关答案提供了您可能需要的所有详细信息:
在Rails和PostgreSQL 中完全忽略时区

最新更新