在我的Rails應用程序中,我試圖在沒有ActiveRecord的情況下執行查詢。基本上我想要做的是選擇記錄的created_at
匹配給定的日期時間,然後按字符串type
分組記錄,然後平均它們的值。 注:我正在使用PostgreSQL。Postgresql在Rails UTC日期時間上選擇,然後按字符串分組並執行平均值
因此,例如,下面的Movie
記錄運行所需的查詢會產生這樣的:
{ Blah: 6, Hi: 2, Hello: 4}
id | value | event_id | user_id | created_at | updated_at | type
----+-------+----------+---------+----------------------------+----------------------------+-------------
1 | 1 | 1 | 1 | 2014-01-22 03:42:44.86269 | 2014-02-15 01:54:15.562552 | Blah
2 | 10 | 1 | 1 | 2014-01-22 03:42:44.86269 | 2014-02-15 01:54:15.574191 | Blah
3 | 1 | 1 | 1 | 2014-01-22 03:42:44.86269 | 2014-02-15 01:54:15.577179 | Hi
4 | 2 | 1 | 1 | 2014-01-22 03:42:44.86269 | 2014-02-15 01:54:15.578864 | Hi
5 | 7 | 1 | 1 | 2014-01-22 03:42:44.86269 | 2014-02-15 01:54:15.580517 | Hello
6 | 1 | 1 | 1 | 2014-01-22 03:42:44.86269 | 2014-02-15 01:54:15.58203 | Hello
(6 rows)
我想我可以和平均分拼湊組,但我m跑進牆壁試圖匹配基於created_at
的記錄。我已經試過:
select * from movies where 'movies.created_at' = '2014-01-22 03:42:44.86269'
與其他一些變化,我嘗試調用to_char
,包括:
select * FROM movies WHERE 'movies.created_at' = to_char('2014-01-22 03:42:44.86269'::TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS');
在上面看起來像這樣的第一個記錄加載ActiveModel記錄:
=> #<Movie id: 1, value: "1", event_id: 1, user_id: 1, created_at: "2014-01-22 03:42:44", updated_at: "2014-02-15 01:54:15", type: "Blah">
其created_at
,這是一個ActiveSupport::TimeWithZone
類的樣子:
=> Wed, 22 Jan 2014 03:42:44 UTC +00:00
我想它與UTC有關,但我無法弄清楚。如果有人有任何想法,我將不勝感激。
啊,你是對的。如果我只是遵循'.to_sql'給我的ActiveRecord查詢,我會擁有它。固執的我......謝謝! – tvalent2