2012-08-14 25 views
0

我使用催化劑和DBIx::Class::TimeStamp,我有一個ResultSet類配置爲每當插入一行時將DateTime列設置爲當前時間:catalyst DBIx :: Class :: TimeStamp設置時間插入到數據庫不工作

__PACKAGE__->load_components("TimeStamp"); 

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

創建行時會插入一個時間,但是將來大約需要6個小時。每當我使用MySQL和它的NOW()函數插入時間時,它就會獲得正確的時間。有誰知道這是爲什麼發生?我正在開發一個mac,如果有幫助的話。謝謝!

回答

2

DBIx::Class::TimeStamp使用DateTime->now獲取時間,所以結果取決於您的計算機設置。但是MySQL的NOW()結果取決於MySQL設置。請參閱計算機,數據庫服務器和MySQL上的時區設置。

0

您總是可以覆蓋Result類中的get_timestamp列,並返回一個帶有正確時區設置的DateTime對象。例如:

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

# ... snip ... 

sub get_timestamp { 
    return DateTime->now(time_zone => "GMT"); 
} 
0

要開始時間散列,添加:

時區=> '本地'

相關問題