use Time::Piece::MySQL; use Date::Parse; __PACKAGE__->has_a( date => 'Time::Piece', inflate => sub { Time::Piece->new(Date::Parse::str2time(shift)); }, deflate => 'mysql_datetime', ); #### package MyTime; use strict; use Time::Piece; package Time::Piece; use overload '""' => sub { shift->dmy("/"); }, 'cmp' => \&str_compare, 'fallback' => undef; 1; #### package MyDBI::Table; use base 'Class::DBI'; use Time::Piece::MySQL; use MyTime; use Date::Parse; __PACKAGE__->has_a( date => 'Time::Piece', inflate => sub { Time::Piece->new(Date::Parse::str2time(shift)); }, deflate => 'mysql_datetime', ); #### my $t = MyDBI::Table->retrieve(1); print $t->date, "\n"; $t->date('2003-07-08'); print $t->date, "\n"; $t->date('07/08/2003'); # read as MM/DD/YYYY print $t->date, "\n";