如何使用ScalaQuery按日期限制查询

时间:2012-11-07 18:18:03

标签: scala date where scalaquery

当我尝试根据日期字段限制查询时,我正在使用Scalaquery并遇到问题。我正在使用Scala 2.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)
    }
}

当我打印select:

时,查询返回0行并生成以下SQL
SELECT "t1"."OPR_DATE" FROM "MYTABLE" "t1" WHERE ("t1"."OPR_DATE"={d '2012-10-27'}) 

我有测试日期的数据。如果我将SQL粘贴到SQL编辑器中并编辑日期以使其不是JDBC模板格式('27 -Oct-2012'),则查询将返回预期的行。谁能告诉我我做错了什么?这不应该起作用吗?

1 个答案:

答案 0 :(得分:0)

今天早上我发现这是一个数据问题。查询工作正常。事实证明我连接的是错误的服务器。我们有一个令人困惑的多个环境和备份系统的设置,它们共享相同的数据库名称。连接到正确的服务器后,查询按预期工作。我在代码和编辑工具之间看到了不同的结果,因为它们指向不同的服务器(相同的数据库名称)。感谢所有花时间为我调查的人。我感谢您的努力。