Ruby strftime'%-m'在查询中不起作用

时间:2015-04-20 04:20:12

标签: ruby-on-rails ruby sqlite strftime

我的目标是通过user_id,创建年份和创建月份来查询项目。我在开发中使用sqlite3,在Heroku上使用postresql。

我想做这样的事情:

items.where("user_id = '?' AND strftime('%Y', created_at) = '?' AND strftime('%-m', created_at) = '?' ", 6, 2015, 3)

但它没有返回任何记录。

这有效:

items.where("user_id = '?' AND strftime('%Y', created_at) = '?' ", 6, 2015)

但这不会返回任何记录:

items.where("user_id = '?' AND strftime('%-m', created_at) = '?' ", 6, 3)

我是否错误地使用'%-m'格式?

1 个答案:

答案 0 :(得分:3)

我不会在开发和生产中使用不同的数据库,使用相同的数据库。只需在localhost上配置postgresql并将查询更改为:

user.items.where("date_part('year', created_at) = :year AND date_part('month', created_at) = :month", year: 2015, month: 6)

假设您在项目和用户之间设置了关联,那么您也不需要在user_id上进行查询。