NAME

DBIx::Class::InflateColumn::DateTime - Auto-create DateTime objects from date and datetime columns.

SYNOPSIS

Load this component and then declare one or more columns to be of the datetime, timestamp or date datatype.

package Event;
__PACKAGE__->load_components(qw/InflateColumn::DateTime Core/);
__PACKAGE__->add_columns(
  starts_when => { data_type => 'datetime' }
);

Then you can treat the specified column as a DateTime object.

print "This event starts the month of ".
  $event->starts_when->month_name();

If you want to set a specific timezone for that field, use:

__PACKAGE__->add_columns(
  starts_when => { data_type => 'datetime', extra => { timezone => "America/Chicago" } }
);

DESCRIPTION

This module figures out the type of DateTime::Format::* class to inflate/deflate with based on the type of DBIx::Class::Storage::DBI::* that you are using. If you switch from one database to a different one your code should continue to work without modification (though note that this feature is new as of 0.07, so it may not be perfect yet - bug reports to the list very much welcome).

For more help with using components, see "USING" in DBIx::Class::Manual::Component.

register_column

Chains with the "register_column" in DBIx::Class::Row method, and sets up datetime columns appropriately. This would not normally be directly called by end users.

In the case of an invalid date, DateTime will throw an exception. To bypass these exceptions and just have the inflation return undef, use the datetime_undef_if_invalid option in the column info:

"broken_date",
{
    data_type => "datetime",
    default_value => '0000-00-00',
    is_nullable => 1,
    datetime_undef_if_invalid => 1
}

SEE ALSO

More information about the add_columns method, and column metadata, can be found in the documentation for DBIx::Class::ResultSource.

AUTHOR

Matt S. Trout <mst@shadowcatsystems.co.uk>

CONTRIBUTORS

Aran Deltac <bluefeet@cpan.org>

LICENSE

You may distribute this code under the same terms as Perl itself.