2012-08-14 7 views
2

나는 DBIx::Class을 사용하고 있으며, 그들이 삽입 된 연도의 날을 기준으로 행을 선택하고 싶습니다. DBIx :: 클래스 열로 DAYOFYEAR(entry_time)을 취급하기 때문에DBIx :: Class tests mysql datetime 함수

$rows = $c->model("DB::Test")->search(
{ 
    "DAYOFYEAR(entry_time)"=>$day_of_year, 
}); 

그러나이 작동하지 않습니다 아래 내 쿼리입니다. 어쨌든 저에게 그 값을 쓰게 할 수 있습니까? 때로는 \'DAYOFYEAR(entry_time)'과 같은 스칼라를 사용하는 경우도 있지만 상황에 따라 작동합니다.하지만 시도해 보았지만 작동하지 않습니다. 누구든지이 일을 할 수있는 방법을 알고 있습니까? 감사!

답변

3

\'DAYOFYEAR(entry_time)'을 사용하는 것이 올바른 접근 방법이며 FAQ의 일부입니다.

[How do I] 왼쪽의 SQL 함수로 검색 하시겠습니까? 하나 있어야 [ plain_value => 1979 ] 부분에 plain_value 문자열 :

->search(\[ 'YEAR(date_of_birth) = ?', [ plain_value => 1979 ] ]); 

참고 :

는 현재 리터럴 SQL에 의존 할 필요가 비교의 왼쪽에 SQL 함수를 사용하려면 함수의 반환 값의 형식이 열의 형식과 동일한 경우 열의 이름과 같거나 함수의 경우 현재 더미 문자열로 처리됩니다 (좋은 문자열입니다). plain_value 또는 그와 유사한 의도를 전달하는 아이디어). 이 값은 현재 특수 열 유형 (BLOB, 배열 등)을 처리 할 때만 중요하지만 이후에 변경 될 수 있습니다.