使用UTC中的当前时间作为PostgreSQL中的默认值

我有一列没有时区的时间戳类型,希望将该默认值设置为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())
);

发表评论