cbu*_*unn 2 postgresql timezone timestamp
我在更新时间戳字段的 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();
Run Code Online (Sandbox Code Playgroud)
默认情况下,如何将我的列设置为始终位于“PST”中?
这是不可能的/误解。时间戳列不在任何时区。时区永远不会被保存,甚至对于timestamp with time zone( timestamptz)也不保存,它总是保存 UTC 时间。这个名字有点误导,我会告诉你的。
您有两个非常简单的选择:
now()到一timestamptz列。now()到一timestamp列。(时区偏移量在转换中被截断。)如果您希望显示“PST”时区的时间戳,请将会话的时区设置设置为该时区(如果尚未设置)。例如:
SET timezone='America/Anchorage'
Run Code Online (Sandbox Code Playgroud)
此相关答案中的详细信息:
要查找您的时区名称:
如果要保存输入值的原始时区:
| 归档时间: |
|
| 查看次数: |
6098 次 |
| 最近记录: |