1

Ruby on Rails で group_by クエリを実行する必要がありますが、まず、クエリを実行する前に、created_at 列のすべてのレコードを特定の時間だけ調整したいと考えています。たとえば、created_at フィールドのすべてのレコードに 9 時間を追加してから、日付でグループ化します。

次のようなものです (これは正しくありません)。

 @foo = Bar.group("date(created_at + 9.hours)").count

Railsでこれを達成するにはどうすればよいですか?

4

1 に答える 1

2

PostgreSQL には、日付と時刻の操作に対する優れたサポートがあります (日付/時刻関数と演算子を参照してください)。「9時間」を として表現しinterval、 に追加してtimestamp、 にキャストできますdate

=> select (now()::timestamp + '9 hours'::interval)::date;
    date    
------------
 2012-09-22
(1 row)

これは、元の擬似コードと非常によく似ています。

@foo = Bar.group("date(created_at + '9 hours'::interval)").count
于 2012-09-22T00:37:39.520 に答える