【发布时间】:2015-06-26 16:05:41
【问题描述】:
我的目标是通过用户 ID、创建年份和创建月份来查询项目。我在 Heroku 上的开发中使用 sqlite3,在生产中使用 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' 格式?
【问题讨论】:
-
不要为
?使用引号。 SQLite3 可能是可以原谅的;不是一般的。%-m格式是什么?我从未见过它,也无法在docs 中找到它。 (注意:你写的是 SQL,所以是 SQLite3strftime,不是 Rubystrftime。) -
请注意,
strftime是一种 SQLite 主义,用于解决缺乏本地时间类型的问题,这对于 PostgreSQL 根本不起作用。帮自己一个忙,在本地安装 PostgreSQL,这样您就可以使用同一个数据库进行开发、测试和部署。 -
您是否有充分的理由不在开发中使用 postgresql?当然,这样的问题突出了为什么在所有环境中使用相同的技术真的很有用?
标签: ruby-on-rails ruby sqlite strftime