sql >> データベース >  >> RDS >> PostgreSQL

日付範囲に対するpostgresの上限範囲関数が排他的境界を返すのはなぜですか?

    質問#1について :クローズドオープンは、学術文献で20〜25年の歴史を持つ、日付範囲を処理するための標準的な方法です。 Bitemporal Data の24〜25ページを参照してください。 Tom Johnston著、およびSQLでの時間指向データベースアプリケーションの開発 リチャード・スノッドグラス作。

    しかし、その理由の1つは、連続する範囲に重複がないことだと思います。 aの場合 は[May2016, Jun2016) およびb[Jun2016, Jul2016) 、彼らは日を共有しません。したがって、それらは「スナップ」し、接触するエッジケースについて心配する必要はありません。

    クローズドオープンの(おそらく)1つの欠点は、空の範囲を指定できないことです。 [May2016, May2016) [May2016, May2016]に対して、は単なる自己矛盾です。 瞬時です。

    質問#2について :これも違うかもしれませんが、upper([May2016, Jun2016))を作成することのいくつかの利点が考えられます。 リターンJun2016

    • 範囲の解像度に関係なく、同じものを返します。
    • これは、オープンエンドポイントの数学的意味に似ており、のみです。 考えられる答え。
    • 「ラベル」に一致するものを返すので、おそらくそれほど驚くことではありません。
    • 2つの範囲が「一致」するかどうかを簡単に確認できます:upper(a) = lower(b)

    また、Postgresではすべて 時間関連のデータ型は離散的です。以前はfloatベースのタイムスタンプを使用してPostgresをコンパイルするオプションがありましたが、非推奨であり、私はこれに遭遇したことがありません。




    1. MicrosoftAccessの将来について楽観的である理由

    2. PHPの配列にprint_r()を適用すると、なぜリソースID#4を取得するのですか?

    3. ER_ACCESS_DENIED_ERROR CloudSQL

    4. ローカルマシンからAWS上のMySQLに接続する