【问题标题】:DBIx::Class test agains mysql datetime functionDBIx::Class 测试 mysql 日期时间函数
【发布时间】:2012-08-11 05:38:29
【问题描述】:
我正在使用DBIx::Class,我想根据插入的日期选择行。以下是我的查询:
$rows = $c->model("DB::Test")->search(
{
"DAYOFYEAR(entry_time)"=>$day_of_year,
});
但这不起作用,因为 DBIx::Class 将DAYOFYEAR(entry_time) 视为一列。无论如何我可以让它使用这个价值吗?我知道有时将其设为 \'DAYOFYEAR(entry_time)' 之类的标量在某些情况下会起作用,但我已经尝试过了,但它不起作用。有谁知道我可以做到这一点的方法?谢谢!
【问题讨论】:
标签:
mysql
perl
datetime
catalyst
dbix-class
【解决方案1】:
使用\ 和'DAYOFYEAR(entry_time)' 是正确的方法,也是FAQ 的一部分。
[如何].. 使用左侧的 SQL 函数进行搜索?
要在比较的左侧使用 SQL 函数,您目前需要使用文字 SQL:
->search( \[ 'YEAR(date_of_birth) = ?', [ plain_value => 1979 ] ] );
注意:[ plain_value => 1979 ] 部分中的plain_value 字符串应该与列的名称相同(如果函数返回值的类型与列的类型相同,请执行此操作)或者在函数的情况下,它当前被视为虚拟字符串(使用plain_value 或类似的东西来传达意图是个好主意)。该值目前仅在处理特殊列类型(BLOB、数组等)时才有意义,但将来可能会改变。