我知道,我知道有几个非常相似的问题,但他们处理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 PostgreSQL,Getting count of elements by `created_at` by day in a given month,Group records by both month and year in Rails,Use active record to find a record by month and day, ignoring year and time
答案 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 }