5

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

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

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

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

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

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

DBIx::Class 似乎有很好的文档——我想我对它太陌生了,我找不到合适的地方/东西来搜索。

提前致谢!

4

1 回答 1

2

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

如果您的列是 UTC,请标记列 UTC,然后在加载它时它应该是 UTC 时间。然后,当您在 DateTime 上设置_timezone 时(大概这将是一个输出问题 - 在输出时您关心它是本地分区的),您可以将其设置为本地时间,它将进行必要的调整。

于 2010-03-16T19:50:57.603 回答