add more extraction types to all databases
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / SQLMaker / Pg.pm
CommitLineData
8aac0b48 1package # Hide from PAUSE
2 DBIx::Class::SQLMaker::Pg;
3
4use base qw( DBIx::Class::SQLMaker );
5use Carp::Clan qw/^DBIx::Class|^SQL::Abstract/;
6{
7 my %part_map = (
37256abd 8 century => 'CENTURY',
9 decade => 'DECADE',
10 day_of_month => 'DAY',
11 day_of_week => 'DOW',
12 day_of_year => 'DOY',
13 seconds_since_epoch => 'EPOCH',
14 hour => 'HOUR',
15 iso_day_of_week => 'ISODOW',
16 iso_year => 'ISOYEAR',
17 microsecond => 'MICROSECONDS',
18 millenium => 'MILLENIUM',
19 millisecond => 'MILLISECONDS',
20 minute => 'MINUTE',
21 month => 'MONTH',
22 quarter => 'QUARTER',
23 second => 'SECOND',
24 timezone => 'TIMEZONE',
25 timezone_hour => 'TIMEZONE_HOUR',
26 timezone_minute => 'TIMEZONE_MINUTE',
27 week => 'WEEK',
28 year => 'YEAR',
8aac0b48 29 );
30
2aedbd3d 31 my %diff_part_map = %part_map;
32 $diff_part_map{day} = delete $diff_part_map{day_of_month};
33
8aac0b48 34 sub _datetime_sql { "EXTRACT($part_map{$_[1]} FROM $_[2])" }
2aedbd3d 35 sub _datetime_diff_sql { "EXTRACT($diff_part_map{$_[1]} FROM ($_[2] - $_[3]))" }
8aac0b48 36}
37
381;