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)
                     = 抽出(タイムスタンプから DOW ?)", Time.now)

現在の時刻を挿入したいだけの場合は、データベース サーバーの時刻が適切であれば、PostgreSQL にそれを実行させることができます。タイムゾーンを考慮してください。

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

についてのマニュアルですextract()

于 2012-04-18T14:58:21.410 に答える