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

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


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

何かありましたらコメントをどうぞ

comments powered by Disqus

人気の記事

950 Points チリ出身のギタリストが弾くドラゴンボールZがむちゃくちゃかっこいい…
774 Points Wordpress + Heroku + PostgreSQL + Amazon S3 = ¥0 / 無料でサイト運営
700 Points Rubyのチートシート 変数 / クラス / モジュール
524 Points Rubyのチートシート / アクティブサポート
451 Points 紙のデザイナーがウェブ開発できるようになるまでに必要なこと
435 Points Rails / Google Analyticsのデータを使って分析や管理画面のためのグラフをつくる
323 Points RailsとHerokuでノーティフィケーションをプッシュする / PusherとTurbolinksの兼ね合い
222 Points Rails / RSpec テスト書いたことない メンドクサイ(n´Д`)という時のチートシート
193 Points Rails / Ajaxを使って画面遷移しない一時保存機能をつける
193 Points Protractorでスクレイピングしてみた