0

我正在使用 Catalyst 和DBIx::Class::TimeStamp并且我的 ResultSet 类之一配置为在插入行时将 DateTime 列设置为当前时间:

__PACKAGE__->load_components("TimeStamp");

__PACKAGE__->add_columns(
   start_time => { data_type => 'datetime', set_on_create => 1 }
);

每当创建一行时都会插入一个时间,但未来大约是 6 小时。每当我使用 MySQL 及其 NOW() 函数插入时间时,它都会正确获取时间。有谁知道为什么会这样?我正在Mac上开发,如果有帮助的话。谢谢!

4

3 回答 3

2

DBIx::Class::TimeStamp用于DateTime->now获取时间,因此结果取决于您的计算机设置。但是 MySQL 的NOW()结果取决于 MySQL 的设置。查看您的计算机、数据库服务器和 MySQL 上的时区设置。

于 2012-08-14T06:55:00.850 回答
0

在开始时间哈希中,添加:

时区 => '本地'

于 2013-06-24T17:24:43.487 回答
0

您总是可以只覆盖get_timestampResult 类中的列并返回具有正确时区集的 DateTime 对象。例如:

package My::Schema::Result::MyTable;

# ... snip ...

sub get_timestamp {
    return DateTime->now( time_zone => "GMT" );
}
于 2012-08-14T18:25:54.033 回答