2016-08-02 18 views
-3

當我做我的數據庫這個請求:紅寶石哈希的日期作爲鍵

users_count = User.select("date_trunc('day', created_at)").group("date_trunc('day', created_at)").count 

然後我有日期的散列作爲鍵:

# => {2016-07-29 00:00:00 UTC=>1, 2016-07-06 00:00:00 UTC=>1, 2016-07-07 00:00:00 UTC=>1, 2016-07-13 00:00:00 UTC=>2, 2016-07-04 00:00:00 UTC=>421, 2016-07-09 00:00:00 UTC=>3, 2016-07-08 00:00:00 UTC=>2, 2016-07-22 00:00:00 UTC=>1, 2016-07-19 00:00:00 UTC=>1, 2016-07-21 00:00:00 UTC=>2} 

但後來我沒能按日期檢索數據:

date = DateTime.new(2016, 7, 29) 
# => Fri, 29 Jul 2016 
users_count[date] 
# => nil 
users_count.keys.first === date 
# => true 
users_count[users_count.keys.first] 
# => 1 

如何檢索在單個請求中在特定日期創建的用戶數?爲什麼紅寶石給我一個值爲零的密鑰存在於哈希中?

感謝您的幫助。

紅寶石版本2.2.4,Rails的版本4.2.5.1

+0

什麼是你的問題? – sawa

+0

你100%肯定他們是'日期'嗎?畢竟,你爲'Hash'鍵顯示的'inspect'輸出(''YYYY-MM-DD HH:MM:SS TZ'')與你爲'Date'顯示的'inspect'輸出不匹配'Www,DD Mmm,YYYY''),它清楚地表明'Hash'鍵不是*'日期'。既然它們同時包含'Date'和'Time',它們可能是'DateTime's,而不是'Date's。 –

+0

抱歉沒有讓我的問題更清楚,我補充說。 @JörgW Mittag:我100%確定我給你的紅寶石輸出。 DateTime無法爲我解決它。 –

回答

0

使用DateTime實例,而不是,轉換成時間,因爲哈希鍵是顯然的Time實例:

date = DateTime.new(2016,7,29,0,0,0).to_time 
+0

我也試過這個,但它不起作用。當然,我再次嘗試過。 –

+0

什麼(假設你的哈希日期⇒值存儲在'哈希變量中)'放入hash.first.first.class.inspect'輸出? – mudasobwa

+0

'users_count.first.first.class.inspectirst.class.inspect' outputs'#=>「Time」' –