这段代码有什么问题?我正在使用 perl 的DateTime模块DBIx::Class。
my $entry_rs = $schema->resultset('table_name')->search_rs(
{
table_id => $row->table_id,
utc_timestamp => { '<', \'DateTime->now()->subtract(days => 180)' },
},
)->all;
Run Code Online (Sandbox Code Playgroud)
我使用的是 PostgreSQL,utc_timestamp类型是时间戳。如果我计算DateTime->now()->subtract(days => 180)并存储在变量中并替换该值,那么它就可以工作。
错误:
DBIx::Class::Storage::DBI::_dbh_execute(): DBI 异常:DBD::Pg::st 执行失败:错误:列“datetime”不存在?
请帮忙
您将 Perl 代码作为文字 SQL 传递到数据库。这是行不通的。尝试这样的事情:
my $dt = DateTime->now()->subtract(days => 180);
my $parser = $schema->storage->datetime_parser;
my $entry_rs = $schema->resultset('table_name')->search_rs(
{
table_id => $row->table_id,
utc_timestamp => { '<', $parser->format_datetime($dt) },
},
)->all;
Run Code Online (Sandbox Code Playgroud)
此代码用于datetime_parser检索DBIx::Class::Storage::DBI适合DateTime::Format您的数据库的类。然后它调用format_datetime该类将DateTime对象转换为可以传递到数据库的字符串。
| 归档时间: |
|
| 查看次数: |
979 次 |
| 最近记录: |