0

私は Catalyst とDBIx::Class::TimeStampを使用しており、行が挿入されるたびに DateTime 列を現在の時刻に設定するように ResultSet クラスの 1 つを構成しています。

__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::TimeStampDateTime->now時間を取得するために使用されるため、結果はコンピューターの設定によって異なります。ただし、MySQL のNOW()結果は MySQL の設定に依存します。コンピューター、データベース サーバー、および MySQL のタイム ゾーン設定を確認します。

于 2012-08-14T06:55:00.850 に答える
0

常に Result クラスの列をオーバーライドget_timestampして、正しいタイムゾーンが設定された DateTime オブジェクトを返すことができます。例えば:

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

# ... snip ...

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