【发布时间】:2025-12-17 10:00:01
【问题描述】:
我正在执行一个 ruby 查询:
Timeslot.where("start_date >= ? AND end_date <= ?", Wed, 01 Jul 2015 18:00:00 SGT +08:00, Wed, 01 Jul 2015 21:00:00 SGT +08:00)
我收到以下错误
SyntaxError: unexpected tCONSTANT, expecting ')'
...AND end_date <= ?", Wed, 01 Jul 2015 18:00:00 SGT +08:00, We...
我想这是因为我没有在星期三之后逃避“,”字符。我有两个问题:
1) 如何更正此查询? 2) 我将用实际的日期时间变量替换 Wed, 01 Jul 2015 18:00:00 SGT +08:00?如果日期时间是变量而不是常量,如何以正确的方式键入此查询?
【问题讨论】:
-
start_time= Time.now和end_time = Time.now + 2.hours。查询:Timeslot.where("start_date >= ? AND end_date <= ?", start_time, end_time) -
Wed, 01 Jul 2015 18:00:00 SGT +08:00既不是有效的 Ruby 日期,也不是有效的 SQL 日期。 -
@Stefan 是的。在 rails 模型的默认 created_at 字段中,这是您要找到的格式
-
没错,它是一种格式,即字符串表示,而不是日期本身。在 IRB(或 rails 控制台)中输入
Date.today会返回格式为Mon, 13 Jul 2015的日期,但输入Mon, 13 Jul 2015会导致语法错误。
标签: ruby-on-rails ruby postgresql datetime