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

时间:2012-09-18 13:23:31

标签: postgresql postgresql-9.2

是否可以将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;

1 个答案:

答案 0 :(得分:8)

如上所述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(), 'infinity', '[)')
);