-
Notifications
You must be signed in to change notification settings - Fork 7
Filter Time::Piece
yuki-kimoto edited this page Mar 28, 2011
·
7 revisions
Time::Piece is standard date and time class.
use Time::Piece;
The following filters are the ones to convert database DATE or DATETIME format to Time::Piece object
SQLite
# Time::Piece object to database DATETIME format
tp_to_datetime => sub {
my $tp = shift;
return '' unless defined $tp;
return $tp unless ref $tp;
return $tp->strftime('%Y-%m-%d %H:%M:%S');
},
# database DATETIME format to Time::Piece object
datetime_to_tp => sub {
require Time::Piece;
my $datetime = shift;
return unless $datetime;
return Time::Piece->localtime(
Time::Piece->strptime($datetime, '%Y-%m-%d %H:%M:%S')
)
},
# Time::Piece object to database DATE format
tp_to_date => sub {
my $tp = shift;
return '' unless $tp;
return $tp unless ref $tp;
return $tp->strftime('%Y-%m-%d');
},
# database DATE format to Time::Piece object
date_to_tp => sub {
require Time::Piece;
my $date = shift;
return unless $date;
return Time::Piece->localtime(
Time::Piece->strptime($date, '%Y-%m-%d')
);
},
MySQL
# Time::Piece object to database DATETIME format
tp_to_datetime => sub {
my $tp = shift;
return '0000-00-00 00:00:00' unless defined $tp;
return $tp unless ref $tp;
return $tp->strftime('%Y-%m-%d %H:%M:%S');
},
# database DATETIME format to Time::Piece object
datetime_to_tp => sub {
require Time::Piece;
my $datetime = shift;
return unless defined $datetime;
return if $datetime eq '0000-00-00 00:00:00';
return Time::Piece->localtime(
Time::Piece->strptime($datetime, '%Y-%m-%d %H:%M:%S')
);
},
# Time::Piece object to database DATE format
tp_to_date => sub {
my $tp = shift;
return '0000-00-00' unless defined $tp;
return $tp unless ref $tp;
return $tp->strftime('%Y-%m-%d');
},
# database DATE format to Time::Piece object
date_to_tp => sub {
require Time::Piece;
my $date = shift;
return unless defined $date;
return if $date eq '0000-00-00';
return Time::Piece->localtime(
Time::Piece->strptime($date, '%Y-%m-%d')
);
},