7

PostgreSQLの範囲型の「無限」の意味は何ですか? infinityor-infinityを境界として指定することと、 orを指定することの間に違いはありますかNULL? つまりinfinity、範囲境界が無限であることを明示的に指定する形式ですが、NULL暗黙的に無限境界範囲を指定しますか?

次の例を参照してください。

SELECT tstzrange('-infinity','infinity') && tstzrange(NULL, NULL);
 ?column?
----------
 t

SELECT tstzrange('2013-01-01 00:00:00+01', '2013-02-01 00:00:00+01')
    && tstzrange(NULL, '2013-03-01 00:00:00+01');
 ?column?
----------
 t

SELECT tstzrange('2013-01-01 00:00:00+01', '2013-02-01 00:00:00+01')
    && tstzrange('-infinity', '2013-03-01 00:00:00+01');
 ?column?
----------
 t
4

1 に答える 1

14

更新:後でこれを参照してください。より良い説明:


NULLは、オーバーラップ演算子&&-infinityに対してまたはと同じことをそれぞれinfinity行います。ここでマニュアルを引用します:

いずれかの境界に NULL を使用すると、範囲はその側で無制限になります。

しかし、として,はまだ!NULLとは異なります。'infinity'

SELECT tstzrange('-infinity','infinity') = tstzrange(NULL, NULL);

返品しますFALSENULL気にしないでください!)。

このSQLfiddleの詳細。

于 2013-03-22T20:20:38.083 に答える