2016-11-24 9 views
3

作成された日付に関係なく、午前2時から午前3時の間に作成されたレコードのセットを選択したいとします。これを達成する方法はありますか?作成日に関係なく時間範囲内で作成されたレコードを選択します。

データベース:PostgreSQLのではPostgreSQLの

+0

データベースを? –

+0

PostgreSQLデータベース –

+0

@ShabiniRajadas私の答えで23と1の間の時間をチェックするための可能な解決策を追加しました –

答えて

2

Model.where("created_at::time BETWEEN '14:00:00' AND '15:00:00'") 

P.S.時間問合せを処理する前に、Railsのデフォルトのタイムゾーン(UTC)と、ユーザーのタイムゾーンの違いに関連する問題を認識していることを確認してください。

+0

UTC/'Time.zone' /ローカル時間の問題を言及するコメント/アラームを追加してください。時間の取り扱いに関して_any_質問に追加する価値があります。 – mudasobwa

+0

@ mudasobwaと同意します。 –

+0

これは完璧に動作します。ありがとう、トン。しかしただ一つの明確化。 23:00:00から01:00:00の間にチェックする可能性はありますか?これは常に私に空の[ –

2

あなたは1時00分00秒に23時00分00秒の間で確認するためのいずれかの可能性があるPostgreSQLextract機能の使用はDATE_TIME

SELECT * FROM users WHERE extract(hour from created_at) BETWEEN 2 and 3; 

から時間を抽出することができます。

同じことがtime BETWEEN 23 and 1では動作しませんが、あなたはそれを次のように達成することができます:

SELECT * FROM users WHERE extract(hour from created_at) >= 23 and extract(hour from created_at) < 1; 
+0

ありがとう、ディパク。 –

+0

時間に数分で渡す方法はありますか? –

+0

'SELECT * FROM states WHERE updated_at :: time BETWEEN '02:00:00 'と'03:00:00'; ' –

関連する問題