微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在postgresql 9.2中使用now()作为tztsrange中的默认值

是否可以将Now()定义为 postgresql 9.2中引入的tztsrange数据类型的起始值?我试着用这个

ALTER TABLE test_table ALTER COLUMN tstz_range SET DEFAULT '[Now,infinity]'::tstzrange;

但是在这样的表达式中,Now()通过改变表来计算当前时间戳,而认值尽管总是相同:

'["2012-09-18 15:00:47.334196+02",infinity]'::tstzrange;

解决方法

in the documentation所述,您可以使用相应的函数定义范围:

SELECT tstzrange(Now(),'infinity','[)');
┌────────────────────────────────────────────┐
│                 tstzrange                  │
├────────────────────────────────────────────┤
│ ["2012-09-18 15:33:50.186351+00",infinity) │
└────────────────────────────────────────────┘

因此,您可以使用以下函数轻松创建认值:

CREATE TABLE plop (
  id serial PRIMARY KEY,some_range tstzrange DEFAULT tstzrange(Now(),'[)')
);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐