我正在使用DBIx::Class,我想根据插入的一年中的哪一天选择行。以下是我的询问:
$rows = $c->model("DB::Test")->search(
{
"DAYOFYEAR(entry_time)"=>$day_of_year,
});
但是这不起作用,因为DBIx :: Class将DAYOFYEAR(entry_time)
视为一列。无论如何我可以让它使用这个价值吗?我知道有时会使它成为一个标量,如\'DAYOFYEAR(entry_time)'
将适用于某些情况,但我已经尝试过,但它不起作用。有谁知道我可以做到这一点的方式?谢谢!
答案 0 :(得分:3)
使用\
和'DAYOFYEAR(entry_time)'
是正确的方法,也是FAQ的一部分。
[我如何] ..使用左侧的SQL函数进行搜索?
要在比较的左侧使用SQL函数,您当前需要求助于文字SQL:
->search( \[ 'YEAR(date_of_birth) = ?', [ plain_value => 1979 ] ] );
注意:
plain_value
部分中的[ plain_value => 1979 ]
字符串应该与列的名称相同(如果函数的返回值的类型与类型相同,请执行此操作(例如,列)或者在函数的情况下,它当前被视为虚拟字符串(使用plain_value
或类似的东西来传达意图是个好主意)。当前处理特殊列类型(BLOB,数组等)时,该值才有意义,但将来可能会发生变化。