SQLite:按月创建组记录并获取每月记录数

时间:2014-10-30 12:04:42

标签: ruby-on-rails sqlite querying

我知道,我知道有几个非常相似的问题,但他们处理Postgres和MySQL。

我有一个跟踪页面访问的模型(事件),我想分组然后计算每个月创建的事件,并使用Chart.js显示。但我不知道如何查询SQLite来收集在某个月创建的事件。

SQLite无法处理EXTRACT()或类似Model.where("MONTH(created_at) = ?", 9)的内容。

我也试过这个question提出的Event.where("strftime('%-m', created_at) = ?", 9),没有运气。无论我尝试什么月份,它都会返回0

作为一个hack-y远景,我甚至尝试在Event中添加month列,用created_at.month填充,但后来放弃了该分支。

我对Rails开发很新,并且在查询时很不稳定,但我看了下面的问题,但仍然无法拼凑任何东西: How to make a query in Postgres to group records by month they were created? (:created_at datetime column)Selecting by month in PostgreSQLGetting count of elements by `created_at` by day in a given monthGroup records by both month and year in RailsUse active record to find a record by month and day, ignoring year and time

2 个答案:

答案 0 :(得分:0)

strftime的正确替换为%m,而不是%-m

此外,strftime返回零填充字符串:

.where("strftime('%m', created_at) = ?", "09")

答案 1 :(得分:0)

我的Bloc.io导师带领我这样做:http://railscasts.com/episodes/29-group-by-month

所以我可以做这样的事情来返回一个带有月份的哈希作为键:

months = Event.all.group_by { |t| t.created_at.beginning_of_month }