我在PostgreSQL表上有一个更新时间戳字段的触发器,但我希望在正确的时区得到它。如何将我的专栏设置为始终位于' PST'默认情况下?这是我的触发器:
ALTER TABLE coastal ADD latest_report TIMESTAMP;
ALTER TABLE coastal ALTER COLUMN latest_report
SET DEFAULT CURRENT_TIMESTAMP;
UPDATE coastal SET latest_report=CURRENT_TIMESTAMP;
CREATE OR REPLACE FUNCTION coastal_latest_report()
RETURNS TRIGGER AS '
BEGIN
NEW.latest_report = NOW();
RETURN NEW;
END;
' LANGUAGE 'plpgsql';
CREATE TRIGGER coastal_latest_report_modtime BEFORE UPDATE
ON coastal FOR EACH ROW EXECUTE PROCEDURE
coastal_latest_report();
答案 0 :(得分:4)
如何将我的专栏设置为始终位于' PST'默认情况下?
这是不可能的/误解。时间戳列不在任何时区中。永远不会保存时区,即使timestamp with time zone
(timestamptz
)也不会保存,这始终可以节省UTC时间。那个名称有点误导,我会给你那个。
您有两个非常简单的选择:
now()
保存到timestamptz
列。now()
保存到timestamp
列。 (演员表中的时区偏移截断。)如果您希望时间戳 显示 ,那么' PST'时区,将会话的时区设置设置为该时区(如果尚未设置)。例如:
SET timezone='America/Anchorage'
这个相关答案的详细信息:
要查找您的时区名称:
如果要保存输入值的原始时区: