【问题标题】:catalyst DBIx::Class::TimeStamp set time on insertion to database not working催化剂 DBIx::Class::TimeStamp 设置插入数据库的时间不起作用
【发布时间】:2012-08-10 08:06:34
【问题描述】:
我正在使用 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上开发,如果有帮助的话。谢谢!
【问题讨论】:
标签:
mysql
macos
perl
datetime
dbix-class
【解决方案1】:
DBIx::Class::TimeStamp 使用DateTime->now 获取时间,因此结果取决于您的计算机设置。但是 MySQL 的 NOW() 结果取决于 MySQL 的设置。查看您的计算机、数据库服务器和 MySQL 上的时区设置。
【解决方案2】:
您总是可以覆盖 Result 类中的 get_timestamp 列,并返回具有正确时区集的 DateTime 对象。例如:
package My::Schema::Result::MyTable;
# ... snip ...
sub get_timestamp {
return DateTime->now( time_zone => "GMT" );
}