我有一列没有时区的时间戳类型,希望将该默认值设置为UTC中的当前时间。以UTC为单位获取当前时间很容易:
postgres=#在时区“utc”选择now();
时区
----------------------------
2013-05-17 12:52:51.337466
(1排)
正如使用列的当前时间戳一样:
postgres=#创建临时表测试(id int,没有时区默认当前时间戳的ts时间戳);
创建表
postgres=#插入测试值(1)返回ts;
ts
----------------------------
2013-05-17 14:54:33.072725
(1排)
但那是当地时间。尝试将其强制为UTC将导致语法错误:
postgres=#创建临时表测试(id int,没有时区默认值的ts timestamp now()在时区“utc”);
错误:在“at”处或附近出现语法错误
第1行:…int,不带时区默认值的ts timestamp now()在time zo。。。
甚至不需要函数。只需在默认表达式周围加上括号:
创建临时表测试(
id int,
不带时区默认值的ts时间戳(时区“utc”处的now())
);