Perl DBIx :: Class是否可以覆盖从数据库中检索列的方式?

时间:2010-03-10 17:18:55

标签: perl sqlite dbix-class

直到今天我才使用过DBIx :: Class,所以我对此完全陌生。

我不确定这是否可行,但基本上我的SQLite数据库中有一个表中有一个时间戳列。 timestamp列的默认值是“CURRENT_TIMESTAMP”。 SQLite将其存储在GMT时区中,但我的服务器位于CDT时区。

我的SQLite查询获取正确时区的时间戳是这样的:

select datetime(timestamp, 'localtime') from mytable where id=1;

我想知道在我的DBIx架构中是否有可能“MyTable”强制它在每次从数据库中检索“timestamp”字段时应用datetime函数?

cookbook中,使用 - > search()函数时可能会这样做,但我想知道如果我使用search(),是否可以这样做, find(),all(),find_or_new()或任何将从数据库中提取此列的函数,它会将datetime()SQLite函数应用于它吗?

DBIx :: Class似乎有很好的文档 - 我觉得我刚才很新,我找不到合适的地方/东西来搜索。

提前致谢!

1 个答案:

答案 0 :(得分:2)

我以这种方式使用InflateColumn :: DateTime并使用时间戳,我可以确认它有效,但我想知道你是否有这个落后。

如果您的列是UTC,请标记UTC列,然后在加载时应该是UTC时间。然后当你在DateTime上设置set_timezone时(可能是输出问题 - 它在输出中你关心它的本地区域)你可以将它设置为当地时间,它将进行必要的调整。