1

PostgreSQL 新手(一般只有 6 个月的编程经验),遇到以下查询问题:

TutoringSession.where("extract (DOW from begin_time)
                     = extract DOW from (?)", Time.now)

给我以下错误消息:

ActiveRecord::StatementInvalid: PG::Error: ERROR:  syntax error at or near "DOW"
LINE 1: ..."  WHERE (extract (DOW from begin_time) = extract DOW from (...
                                                             ^
: SELECT "tutoring_sessions".* FROM "tutoring_sessions"  WHERE (extract (DOW from   begin_time) = extract DOW from ('2012-04-18 14:39:58.202249'))

我浏览了 PostgreSQL 文档。有任何想法吗?

4

1 回答 1

2

评论后更新。
你放错括号了。并添加显式类型转换。

TutoringSession.where("extract (DOW from begin_time)
                     = 提取(从时间戳中提取DOW ?)”,Time.now)

如果您只想插入当前时间,您可以让 PostgreSQL 为您执行此操作 - 前提是数据库服务器上的时间适合您。考虑时区。

TutoringSession.where("extract (DOW from begin_time)
                     = extract (DOW from now())")

关于extract().

于 2012-04-18T14:58:21.410 回答