2

我正在使用DBIx::Class并且我想根据插入的日期选择行。以下是我的查询:

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

但是这不起作用,因为 DBIx::Class 将DAYOFYEAR(entry_time)其视为一列。无论如何我可以让它使用这个价值吗?我知道有时将其设为标量,例如\'DAYOFYEAR(entry_time)'适用于某些情况,但我已经尝试过,但它不起作用。有谁知道我可以做到这一点的方法?谢谢!

4

1 回答 1

4

使用\and'DAYOFYEAR(entry_time)'是正确的方法,也是FAQ的一部分。

[我如何] .. 使用左侧的 SQL 函数进行搜索?

要在比较的左侧使用 SQL 函数,您当前需要使用文字 SQL:

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

注意:部分plain_value中的字符串[ plain_value => 1979 ]应该与列的名称相同(如果函数的返回值的类型与列的类型相同,则执行此操作)或者对于当前为函数的情况被视为一个虚拟字符串(使用plain_value或类似的东西来传达意图是一个好主意)。该值目前仅在处理特殊列类型(BLOB、数组等)时才有意义,但将来可能会改变。

于 2012-08-14T21:05:06.400 回答