postgres DBの日付範囲に基づいて更新できる方法はありますか?
次の値を持つ行がある場合、
name code some_timestamp
abc 1 2020-09-07T13:22:23.206862
nameおよびsome_timestampフィールドに基づいて行ベースを更新したい。
私は以下を行うことができ、それはうまくいきます。
UPDATE myTable SET code=2 WHERE name='apple' and some_timestamp='2020-09-07T13:22:23.206862';
しかし、私は特定の日時をターゲットにしたくないので、代わりに
名前が一致し、日付範囲が同じ日に該当します。
これを達成する方法はありますか?date_truncを使用して試しました。エラーはありませんが、更新は行われません。(LIKEでも同じ結果を試しました)。
update myTable set code=1 where name='apple' and some_timestamp=date_trunc('day', TIMESTAMP '2020-09-07T13:22:23.206862');
それ以外の場合はBETWEENキーを使用して達成できますが、これがdate_truncを使用して実行できるかどうかを確認しようとします。アドバイスをお願いします。ありがとう。
私がお勧めします:
update myTable
set code=1
where name = 'apple' and
some_timestamp >= date_trunc('day', TIMESTAMP '2020-09-07T13:22:23.206862') and
some_timestamp < date_trunc('day', TIMESTAMP '2020-09-07T13:22:23.206862') + interval '1 day';
次のものも使用できます。
update myTable
set code=1
where name = 'apple' and
date_trunc('day', some_timestamp) = date_trunc('day', TIMESTAMP '2020-09-07T13:22:23.206862');
しかし、これはインデックスに適していません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加