我在使用 Postgres 查询的 Rails 中遇到了一个奇怪的问题。
查询看起来像这样:
WeeklyPlanner.find_or_create_by_user_id(current_user.id).recipes.find(:all,
:conditions => ["
weekly_planner_events.time_start =
date_part('epoch', to_timestamp(?)::timestamptz at time zone 'CDT')",
Time.local(Time.now.year, Time.now.month, Time.now.day).to_i
])
这会生成(我可以在控制台中查看)以下 SQL 语句:
SELECT "recipes".* FROM "recipes"
INNER JOIN "weekly_planner_events" ON "recipes"."id" = "weekly_planner_events"."recipe_id"
WHERE "weekly_planner_events"."weekly_planner_id" = 2
AND (weekly_planner_events.time_start = date_part('epoch', to_timestamp(1347426000)::timestamptz at time zone 'CDT'))
我的问题是生成的 SQL 语句在 psql 或 pgAdmin 上运行良好,但在 rails 上它返回一个空数组。也就是说,如果我在 postgres 控制台上按原样复制并粘贴它,它工作得非常好,但是当我在 Rails 控制台上运行它时,它什么也没有返回,我不知道它为什么会发生。
我尝试了以下方法:
- 参数化 'epoch' 和 'CDT'/timezone(为了删除
'
s - 切换到
where
语句,条件相同 #{}
用s传递变量
在 Rails 中不使用该函数进行搜索可以正常工作,但显然不是我需要的结果。date_part('epoch', [float])
我发现这个问题很混乱,如果您需要任何其他数据,请告诉我,我会编辑帖子。
谢谢你。