我的目标是通过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'
格式?
答案 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
上进行查询。