Commit | Line | Data |
8aac0b48 |
1 | package # Hide from PAUSE |
2 | DBIx::Class::SQLMaker::Pg; |
3 | |
4 | use base qw( DBIx::Class::SQLMaker ); |
5 | use 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 | |
38 | 1; |