私は、非常に便利なTIMESTAMP
とINTERVAL
算術を持つPostgre
が見つかりました。しかし、この魔法には、クエリを実行するときに検出するトリッキーも含まれています。PostgreSQLでINTERVALが相対または絶対であることを確認する方法
質問です:
は
INTERVAL
が相対またはPostgre
で絶対であるかどうかを判断する方法はありますか?
レットは、いくつかは次のようにエンコードされ、私はそれにさまざまなINTERVAL
sの列を持っていると言う相対('1 mon'
)他は絶対('30 days'
)として符号化されます。
相対INTERVAL
は絶対INTERVAL
に変換可能でなければなりませんので、我々はそれらを直接比較することはできません。
SELECT '1 mon'::INTERVAL = '30 days'::INTERVAL;
はTRUE
を返しますので、我々は区別することができません。
相対INTERVAL
週がよく定義されている最大のグラニュラリティであるため、週より上のグラニュラリティが発生します。そのようなテストは満足のいくものではない:
SELECT some_interval > '1 week';
が'21 days'::INTERVAL
代わり絶対の相対として検出falsyので。
TIMESTAMP
を使用すると、演算結果が異なる結果になることが、相対値と絶対値の1つの違いであることが分かります。INTERVAL
SELECT '2000-02-01'::TIMESTAMP + '1 mon'::INTERVAL;
SELECT '2000-02-01'::TIMESTAMP + '30 days'::INTERVAL;
第戻り'2000-03-01'::TIMESTAMP
と明らかに異なっており、後者の戻り'2000-03-02'::TIMESTAMP
、。
しかし、これは算術演算のいくつかの組み合わせを生成することによって相対性をチェックするのがやや奇妙に見えますが、'1 week'::INTERVAL
と'7 days'::INTERVAL
を区別することはできません(ただし、 )。
だから、私は内蔵のまたは自家製FUNCTION
INTERVAL
はPostgre
における相対絶対かであるかどうかを検出することができますを探しています。何か案が?あなたは「相対的」(すべての月は年の日数と同じ数と同じものを持っていないため)、「月」または「年」が含まれているタイムスタンプがある呼び出し何
この区別の目的は何ですか? –
@ClodoaldoNeto、どういう意味ですか? – jlandercy
なぜ、あなたは相対的なものと絶対的なものとを区別する必要があるのですか? –