PostgreSQLで特定日時のデータを取得する

想定シーン:

毎日朝5時に、昨日の 00:00 ~ 23:59 のデータを抽出したい場合。

少し考えてしまったので、自分用に忘備録。

 

select * from table_name where date between ¥

to_timestamp(to_char(current_timestamp + '-1 days', 'YYYY-MM-DD 00:00:00'),'YYYY-MM-DD HH24:MI:SS') ¥

and to_timestamp(to_char(current_timestamp + '-1 days', 'YYYY-MM-DD 23:59:59'),'YYYY-MM-DD HH24:MI:SS');

 

流れ:

①.現在日時から-1日した、文字列を作る(時間は 00:00:00)

②.①のままだとタイムスタンプとして扱えないので to_timestampで変換する

 

うーん。もっとシンプルに書ける気が・・。

 

・to_char()

タイムスタンプを文字列に変換する

・to_timestamp()

文字列をタイムスタンプに変換する