テーブルにbigintとして保存された日付があり、30日以上経過したレコードを選択しようとしています。私はこの質問に関連するSOとGoogleに関する1トンの質問を見ましたが、私は必要なものを見つけることができません。非常に非効率ですbigint datetimesを使用してX日より古いレコードを選択する
私が持っているものHERESに、:
SELECT
COUNT(*)
FROM
alert
WHERE
('1969-12-31 19:00:00 GMT'::timestamp + (alert.mytstamp::text)::interval) < (localtimestamp - INTERVAL '30 days')
私が理解から、それは「30日前」のタイムスタンプと比較するために、タイムスタンプにBIGINT mytstamp
フィールドに変換されます。
私のSQLスキルは弱いですが、それはテーブルのすべてのレコードのためにこれを行います:(私は、だから簡単に行く:)。助けてくれてありがとう。
CURRENT_TIMESTAMPと計算の両方が確定的です。 PostgreSQLは一度だけ計算します。 (CURRENT_TIMESTAMPは、現在のトランザクションの開始時のサーバーの時刻です。)[その他の時刻関数](http://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT)は、異なって振る舞う。 –