1

Scalaqueryを使用していますが、日付フィールドに基づいてクエリを制限しようとすると問題が発生します。私はScala2.9.2、ScalaQuery 2.9.1:0.10.0-M1を使用しています。以下のコードを検討してください。

case class MyCase (opr_date: Date)       

object MyClass extends BasicTable[MyCase]("MYTABLE") {

    def opr_date = column[Date]("OPR_DATE")
    def * = opr_date <> (MyCase, MyCase.unapply _)

    def test(date: Date) = db.withSession {

        logDebug("test date:  " + date)
        val qry = for {
                d <- MyClass if (d.opr_date === date)
        } yield d.opr_date
        logDebug(qry.selectStatement)
        qry.list
    }
}

このクエリは行を返しません。呼び出しコードは次のとおりです。

"The data" should {
    "be available " in {

        val testDate = CommonFormat.parseDate("2012-10-27", CommonFormat.EURO_SHORT).getTime
        val records = MyClass.test2(new java.sql.Date(testDate))
        records.size must be_>(0)
    }
}

クエリは0行を返し、selectを出力すると次のSQLを生成します。

SELECT "t1"."OPR_DATE" FROM "MYTABLE" "t1" WHERE ("t1"."OPR_DATE"={d '2012-10-27'}) 

テスト日のデータがあります。SQLをSQLエディターに貼り付け、JDBCテンプレート形式( '27-Oct-2012')ではないように日付を編集すると、クエリは期待される行を返します。誰かが私が間違っていることを教えてもらえますか?これはうまくいかないのですか?

4

1 に答える 1

0

今朝、これがデータの問題であることがわかりました。クエリは正常に機能します。間違ったサーバーに接続していたことが判明しました。同じデータベース名を共有する複数の環境とバックアップ システムのセットアップが混乱しています。正しいサーバーに接続すると、クエリは期待どおりに機能します。私のコードとエディターツールは異なるサーバーを指していたため、異なる結果が表示されました(同じデータベース名がうーん)。時間を割いて調査してくれたすべての人に感謝します。あなたの努力に感謝します。

于 2012-11-09T15:39:42.607 に答える