この質問はPostgreSQL 8.3に関するものです。私はPostgreSQL 8.3のRegexの置き換え
NULL + INTERVAL '3 days' > TIMESTAMPTZ '2012-01-01' - INTERVAL '1 month'
ような文字列を(も<、=または<>であり得る)>オペレータの双方を有する
は、タイムスタンプまたはNULLを含む+で追跡又は - 及び間隔の仕様。
タイムスタンプがNULLの場合は、 '+ INTERVAL'を3日間削除したいと考えています。これは正規表現では可能ですが、私はそれらを使うのが初めてです。私はこれをどのようにするべきですか?私が欲しいもののいくつかの例:
1)
NULL + INTERVAL '3 days' > TIMESTAMPTZ '2012-01-01' - INTERVAL '1 month'
が
NULL + INTERVAL '3 days' > NULL - INTERVAL '1 month'
が
NULL > NULL
に変更する必要があります)
NULL > TIMESTAMPTZ '2012-01-01' - INTERVAL '1 month'
2に変更する必要があります
3)
TIMESTAMPTZ '2012-01-01' + INTERVAL '3 days' > TIMESTAMPTZ '2012-02-01' - INTERVAL '1 month'
は変更されないままにする必要があります。
'' 'NULL + anything'''は' '' NULL'''と評価されるので、SQLで使用したい場合は文字列を変更する必要はありません。引用符を修正して、ちょっとランダムに見えるように、あなたの質問を編集してください:-)。 –
このエラーのため真実かどうか疑問に思う: 'ERROR:operator does not exist:interval>タイムゾーンのないタイムスタンプ LINE 1:SELECT NULL + INTERVAL '22 days '> TIMESTAMP' 2011-12-2 ...' 。私はNULLに間隔を追加し、間隔とタイムスタンプを比較することはできません。さて、「タイムスタンプ」を後で追加したので、TIMESTAMPを持っていなければあなたの答えは正しいでしょう。とにかく、 'NULL + INTERVAL '1 day''は、タイムスタンプと比較するとNULLになります。 – Leonard
@レオナード:ティムは絶対に正しいです、「NULL」と*何かが結びついているのは普遍的には「NULL」です。 **データ型**と**値**を混同しないでください。関係するデータ型の演算子が定義されている場合のみ、値を比較できます。これはPostgreSQLでは不可能です: 'SELECT NULL :: interval> NULL :: timestamp'。 –