RailsのSQLiteのdatetime列でDATEによるグループ化がnilを返す理由を理解するのに苦労しています。日付でグループ化された startdate フィールドに値を持つユーザーの数を返したいと考えています。
誰でも助けることができますか?以下のクエリの DATE の側面を削除すると、期待どおりの結果が返されます。以下のさまざまなクエリと結果を参照してください。
User.where("startdate IS NOT NULL").group("DATE(startdate)").count
与える
SELECT COUNT(*) AS count_all, DATE(startdate) AS date_startdate
FROM "users"
WHERE (startdate IS NOT NULL)
GROUP BY DATE(startdate)
=>{nil=>10}
私が期待するのは、日付の配列です (例: {"2013-06-04"=>3, "2013-06-10"=>4, "2013-06-11"=>3})。以下のクエリではこれには DATE 演算子がありません。結果は期待どおりですが、明らかに時間でグループ化したくありません (実際の DB では、同じ日付に異なる時間があります)。
User.where("startdate IS NOT NULL").group("(startdate)").count
与える
SELECT COUNT(*) AS count_all, (startdate) AS startdate
FROM "users"
WHERE (startdate IS NOT NULL)
GROUP BY (startdate)
=>{"2013-06-04 17:27:30.553802+0000"=>3, "2013-06-10 09:24:06.207327+0000"=>4,
"2013-06-11 12:20:37.745819+0000"=>3}