http://qs321.pair.com?node_id=374655
Description: One of my favorite features of Class::DBI is the ability to inflate/deflate fields into any object. For instance, your date or time columns can be expanded into DateTime objects. The snippet below creates a method which, when called with a column name, will expand that column into a DateTime object. It requires the DateTime::Format::DBI module and the DateTime::Format module for your database. Within your application, whatever date field you get out of the database will automagically become a DateTime instance.
package My::Database; # Main Class::DBI module
use base 'Class::DBI';

# Other Class::DBI code here

sub is_datetime 
{
        my $class = shift;
        my $field = shift || return;

        use DateTime::Format::DBI;
        my $dtf = DateTime::Format::DBI->new( $class->db_Main );
        $class->has_a( $field => 'DateTime',
            inflate  => sub { $dtf->parse_datetime(   shift ) },
            deflate  => sub { $dtf->format_datetime(  shift ) },
        );
}


package My::Database::SomeTable;
use base 'My::Database';

# Other Class::DBI code here

__PACKAGE__->is_datetime( 'timestamp' );