【问题标题】: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、数组等)时才有意义,但将来可能会改变。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      • 2010-12-28
      • 1970-01-01
      • 2022-06-29
      • 1970-01-01
      • 2011-07-09
      相关资源
      最近更新 更多