运行时:
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所在的时区是至关重要的。
- 研究生是在EST还是在UST
- 如果它在UST中,我如何将其转换为EST?这样做是否危险
- 我将允许用户从选择菜单中输入时间戳-菜单应该列出UTC时间还是EST时间
Postgres中默认的timestamp
类型为timestamp without time zone
要处理此问题,请使用timestamp with time zone
数据类型。
或者将时区设置为UTC并使用timestamp [without time zone]
运行数据库。请注意,会话的时区设置与Postgres为您的查询实际返回的内容有关。
此相关答案提供了您可能需要的所有详细信息:
在Rails和PostgreSQL 中完全忽略时区