Perl DBIx::Class能否覆盖从数据库检索列的方式?
直到今天我才使用过DBIx::Class,所以我对它完全陌生 我不确定这是否可行,但基本上我的SQLite数据库中有一个表,其中有一个timestamp列。timestamp列的默认值为“CURRENT_timestamp”。SQLite将其存储在GMT时区,但我的服务器位于CDT时区 我的SQLite查询用于获取正确时区中的时间戳,如下所示:Perl DBIx::Class能否覆盖从数据库检索列的方式?,perl,sqlite,dbix-class,Perl,Sqlite,Dbix Class,直到今天我才使用过DBIx::Class,所以我对它完全陌生 我不确定这是否可行,但基本上我的SQLite数据库中有一个表,其中有一个timestamp列。timestamp列的默认值为“CURRENT_timestamp”。SQLite将其存储在GMT时区,但我的服务器位于CDT时区 我的SQLite查询用于获取正确时区中的时间戳,如下所示: select datetime(timestamp, 'localtime') from mytable where id=1; 我想知道,在我的DB
select datetime(timestamp, 'localtime') from mytable where id=1;
我想知道,在我的DBIx模式中,“MyTable”是否有可能在每次从数据库检索“timestamp”字段时强制它应用datetime函数
在中,当使用->search()函数时,似乎可以这样做,但我想知道如果我使用search()、find()、all()、find_或_new()或任何将从数据库中提取此列的函数,是否可以这样做,它将对其应用datetime()SQLite函数
类似乎有很好的文档-我想我只是太新了,没有找到合适的地方/东西来搜索
提前谢谢 我以这种方式使用了InflateColumn::DateTime,并带有时间戳,我可以确认它是有效的,但我想知道您是否有反向使用
如果您的列是UTC格式,请标记该列UTC,然后在加载该列时,它应该是UTC时间。然后,当您在DateTime上设置_时区时(这可能是一个输出问题-您关心的是在输出时它是本地分区的),您可以将它设置为本地时间,它将进行必要的调整。我找到了DBIx::Class::InflateColumn::DateTime文档,并尝试放置一个时区=>“America/Chicago”在我的列定义中。不过,这似乎没有什么区别。看起来我可能可以使用充气_column()方法,但似乎每当我检索记录集时,我都需要获取时间戳列的充气版本-有没有办法将充气版本作为默认值应用?这看起来有点接近,但不确定如何使用它: