Rails / タイムゾーンを指定して時間帯で検索する
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