5

postgresql 9.2 で導入されたデータ型now()の開始値として定義することはできますか? 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;
4

1 に答える 1

10

ドキュメントに記載されているように、対応する関数で範囲を定義できます。

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', '[)')
);
于 2012-09-18T15:35:28.967 に答える