我在SQLite数据库中有一个表,其中一列以epoch秒存储文件mtimes.
我现在想搜索在某个月内修改过的表格文件?
在原始SQL中我会这样做:
select * from my_table where strftime('%Y-%m', mtime, "unixepoch") = "2009-08"
Run Code Online (Sandbox Code Playgroud)
有没有办法通过DBIx :: Class有效地做到这一点?有可能吗?
$m->search({ \'strftime('%Y-%m', mtime, "unixepoch")' => "2009-08" })
Run Code Online (Sandbox Code Playgroud)
我试过了解DBIx :: Class :: InflateColumn :: DateTime是否有办法,但我没有找到它.
谢谢
西蒙娜
您正在寻找的语法是:
$m->search(
\[ q{strftime('%Y-%m', mtime, "unixepoch") = ?}, "2009-08" ]
);
Run Code Online (Sandbox Code Playgroud)
是的,这是一个数组ref-ref.第一个元素是允许使用?占位符的文字SQL,其余元素是绑定到这些占位符的值,DBIC将确保在内部对所有内容进行重新排序,以便在绑定列表中将这些值放入绑定列表中的正确位置.查询运行.
如果您需要将其中一个与其他条件组合在一起,因为arrayrefref不是有效的哈希键,您需要使用以下-and语法:
$m->search({
-and => [
foo => 'bar',
\[ q{ SQL }, $bind ],
],
});
Run Code Online (Sandbox Code Playgroud)
以下是此构造的SQL :: Abstract文档部分.
| 归档时间: |
|
| 查看次数: |
1143 次 |
| 最近记录: |