2017-09-16 1 views
1

Postgres 9.6.2のテーブルのtimestamp with time zoneカラムに将来の日付をINSERTにしようとしています。この日付は、現在のトランザクション時間に任意の間隔(1時間など)を加えたものになります。 私はSELECT文で日付/時刻演算を行う方法を理解しますが、NOW() + INTERVAL '1 hour'の同じ構文がINSERT文で有効ではないようです。Postgres 9.xでnow()+ INTERVALを挿入する方法

ほかに、アプリケーションレベルでこれを達成するから、それは、日付/時刻演算を使用して、単一のINSERT文を使用して、これを達成することは可能でしょうか?もしそうでなければ、この状況では何がベストプラクティスでしょうか?

答えて

2

は、私はあなたがそれが正しいと思う - これが私の仕事:私はPostgresの9.4.13を実行しています

insert into barcode (id,barcode,active,created,updated) 
    values (111,'23432', true, NOW() + INTERVAL '1 hour',NOW()); 

+0

これは非常に興味深いものです。あなたが提供したSQLは、私が望むように正確に動作します。また、この構文で完全なクエリを実行した場合にのみ、正常に動作することを期待していました。私のnode.jsミドルウェアでpgadminでクエリを実行すると、構文エラーが発生します。 エラー:タイムゾーン付きタイムスタンプタイプの入力構文が無効です: "NOW()+ INTERVAL '1時間'" ' 引用符で使用する正しい構文についてここには記載されていませんか?私は、pgadminがテーブルのデータを編集しているときに値を引用符で囲んでいるという印象を受けています。 – ajxs

+2

引用符でエスケープする可能性があります – user2182349

+1

あなたは正しいです。それは引用符でエスケープ問題だった。 postgresが二重引用符で囲まれていれば 'NOW()+ INTERVAL '1時間'という式を解析できないようです。それはかなり混乱しています。私の最初の質問に正しく答えたので、正解とマークしました!ありがとうございました! – ajxs

関連する問題