是否可以将 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(), 'infinity', '[)')
);
关于postgresql - 在 postgresql 9.2 的 tztsrange 中使用 now() 作为默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12477957/