gpt4 book ai didi

Perl DBIx::Class DateTime 减法

转载 作者:行者123 更新时间:2023-12-04 12:52:52 26 4
gpt4 key购买 nike

这段代码有什么问题?我将 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;

我正在使用 PostgreSQL,utc_timestamp 类型是时间戳。如果我计算 DateTime->now()->subtract(days => 180) 并存储在变量中并替换该值,那么它就可以工作了。

错误:

DBIx::Class::Storage::DBI::_dbh_execute(): DBI Exception: DBD::Pg::st execute failed: ERROR: column "datetime" does not exist ??

请帮忙

最佳答案

您将 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;

此代码使用 datetime_parser in DBIx::Class::Storage::DBI检索适合您的数据库的 DateTime::Format 类。然后它调用该类的 format_datetimeDateTime 对象转换为可以传递给数据库的字符串。

关于Perl DBIx::Class DateTime 减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16842444/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com