2012-11-07 2 views
1

Scalaquery를 사용하고 있으며 날짜 필드를 기반으로 쿼리를 제한하려고 할 때 문제가 발생했습니다. 0.10.0-M1 아래 코드를 살펴 보자 : 나는 스칼라 2.9.2, ScalaQuery 2.9.1을 사용하고ScalaQuery를 사용하여 날짜별로 쿼리를 제한하는 방법

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 행을 반환하고 내가 선택을 인쇄하려면 다음 SQL이 생성

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

나는 시험 날짜에 사용할 데이터가 있습니다. SQL 편집기에 SQL을 붙여 넣고 JDBC 편집 형식 ('27-Oct-2012 ')이 아니라 예상되는 행을 반환하도록 날짜를 편집하면됩니다. 아무도 내가 뭘 잘못하고 있다고 말할 수 있습니까? 이거 작동하지 않아야합니까?

+0

첫째, 당신은 어떤 데이터베이스를 사용합니까? 그리고 두 번째 - 만약 당신이 그 "다음 SQL은"붙여 넣기, 그것은 필요한 행을 반환합니까? – Rogach

+0

필자는 Oracle 데이터베이스를 사용하고 있으며 클라이언트에 SQL을 붙여 넣을 때 예상되는 행을 얻습니다 (PL/SQL Developer). – myio561

+0

유감스럽게도 테스트 할 Oracle이 없지만 날짜 형식이 일치하지 않을 수 있습니다. 정확한 날짜 대신 int와 같은 간단한 코드를 사용해보십시오. 질문의 마지막 단락은 아마도 힌트 일 것입니다. h2와 같은 메모리 내 데이터베이스로 스왑하고 문제가 Oracle과 관련이 있는지 여부를 확인하는 것이 좋습니다. 오라클에 대한 Slick (새로운 ScalaQuery) 지원이 아직 완료되지 않았 음을 알고 있습니다. 이것은 ScalaQuery에서도 마찬가지 일 수 있습니다 ... – Jack

답변

0

오늘 아침에 이것이 데이터 문제라는 것을 알았습니다. 쿼리가 제대로 작동합니다. 내가 잘못된 서버에 연결하고있는 것으로 나타났습니다. 동일한 데이터베이스 이름을 공유하는 여러 환경과 백업 시스템을 혼란스럽게 설정합니다. 올바른 서버에 연결하면 쿼리가 예상대로 작동합니다. 다른 서버 (동일한 데이터베이스 이름)를 가리키고 있기 때문에 코드와 편집기 도구간에 다른 결과가 나타났습니다.이 문제를 조사하는 데 시간을 할애 해 주신 모든 분들께 감사드립니다. 당신의 노력에 감사드립니다.

관련 문제