Rails / タイムゾーンを指定して時間帯で検索する

Shunsuke Sawada

10〜13時までに発生したレコードを検索するにはどうすればいいのだろう…。
とちょっと悩んだ。のでメモします。

ruby
1
2
3
4
5
scope :filter_by_hour, -> (from, to) {
  Model.where("date_part('hour', model.created_at::timestamp with time zone at time zone 'Australia/Sydney') between ? and ?", from, to)
}

こんな感じでできた。

at time zone 'Australia/Sydney' だけでなく with time zone も必要だった。

以上です。
  

参考

PostgreSQL: Documentation: 9.2: Date/Time Functions and Operators

Shunsuke Sawada

おすすめの記事

EC2でインスタンスを立ち上げてCapistranoでGithubからWordpressをデプロイするまで
Rails / データを時間単位で集計する
Android Studio をアップデートしたらエミュレータが動作しなくなった