{
my %part_map = (
- month => 'mm',
- day_of_month => 'dd',
- year => 'yyyy',
+ year => 'year',
+ quarter => 'quarter',
+ month => 'month',
+ day_of_year => 'dayofyear',
+ day_of_month => 'day',
+ week => 'week',
+ day_of_week => 'weekday',
+ hour => 'hour',
+ minute => 'minute',
+ second => 'second',
+ millisecond => 'millisecond',
);
my %diff_part_map = %part_map;
- $diff_part_map{day} = delete $diff_part_map{day_of_month};
+ $diff_part_map{day} = delete $diff_part_map{day_of_year};
+ delete $diff_part_map{day_of_month};
+ delete $diff_part_map{day_of_week};
sub _datetime_sql { "DATEPART('$part_map{$_[1]}', $_[2])" }
sub _datetime_diff_sql { "DATEDIFF('$diff_part_map{$_[1]}', $_[2], $_[3])" }
{
my %part_map = (
- month => 'MONTH',
- day_of_month => 'DAY',
- year => 'YEAR',
+ microsecond => 'MICROSECOND',
+ second => 'SECOND',
+ minute => 'MINUTE',
+ hour => 'HOUR',
+ day_of_month => 'DAY',
+ week => 'WEEK',
+ month => 'MONTH',
+ quarter => 'QUARTER',
+ year => 'YEAR',
+ # should we support these or what?
+ second_microsecond => 'SECOND_MICROSECOND',
+ minute_microsecond => 'MINUTE_MICROSECOND',
+ minute_second => 'MINUTE_SECOND',
+ hour_microsecond => 'HOUR_MICROSECOND',
+ hour_second => 'HOUR_SECOND',
+ hour_minute => 'HOUR_MINUTE',
+ day_microsecond => 'DAY_MICROSECOND',
+ day_second => 'DAY_SECOND',
+ day_minute => 'DAY_MINUTE',
+ day_hour => 'DAY_HOUR',
+ year_month => 'YEAR_MONTH',
);
my %diff_part_map = %part_map;
{
my %part_map = (
- month => 'MONTH',
- day_of_month => 'DAYOFMONTH',
- year => 'YEAR',
+ month => 'MONTH',
+ day_of_month => 'DAYOFMONTH',
+ day_of_year => 'DAYOFYEAR',
+ day_of_quarter => 'DAY_OF_QUARTER',
+ quarter => 'QUARTER_OF_YEAR',
+ month_of_quarter => 'MONTH_OF_QUARTER',
+ year => 'YEAR',
+ hour => 'HOUR',
+ minute => 'MINUTE',
+ second => 'SECOND',
+ week_of_quarter => 'WEEK_OF_QUARTER',
+ week_of_year => 'WEEK_OF_YEAR',
);
sub _datetime_sql { "$part_map{$_[1]}($_[2])" }
{
my %part_map = (
- month => 'SQL_TSI_MONTH',
- day => 'SQL_TSI_DAY',
- year => 'SQL_TSI_YEAR',
+ second => 'SQL_TSI_SECOND',
+ minute => 'SQL_TSI_MINUTE',
+ hour => 'SQL_TSI_HOUR',
+ week => 'SQL_TSI_WEEK',
+ quarter => 'SQL_TSI_QUARTER',
+ month => 'SQL_TSI_MONTH',
+ day_of_year => 'SQL_TSI_DAY',
+ year => 'SQL_TSI_YEAR',
);
sub _datetime_diff_sql { "TIMESTAMPDIFF($part_map{$_[1]}, $_[2], $_[3])" }
use Carp::Clan qw/^DBIx::Class|^SQL::Abstract/;
{
my %part_map = (
- month => 'MONTH',
- day_of_month => 'DAY',
- year => 'YEAR',
+ century => 'CENTURY',
+ decade => 'DECADE',
+ day_of_month => 'DAY',
+ day_of_week => 'DOW',
+ day_of_year => 'DOY',
+ seconds_since_epoch => 'EPOCH',
+ hour => 'HOUR',
+ iso_day_of_week => 'ISODOW',
+ iso_year => 'ISOYEAR',
+ microsecond => 'MICROSECONDS',
+ millenium => 'MILLENIUM',
+ millisecond => 'MILLISECONDS',
+ minute => 'MINUTE',
+ month => 'MONTH',
+ quarter => 'QUARTER',
+ second => 'SECOND',
+ timezone => 'TIMEZONE',
+ timezone_hour => 'TIMEZONE_HOUR',
+ timezone_minute => 'TIMEZONE_MINUTE',
+ week => 'WEEK',
+ year => 'YEAR',
);
my %diff_part_map = %part_map;
{
my %part_map = (
- month => 'm',
- day_of_month => 'd',
- year => 'Y',
+ month => 'm',
+ day_of_month => 'd',
+ year => 'Y',
+ hour => 'H',
+ day_of_year => 'j',
+ minute => 'M',
+ seconds => 'S',
+ day_of_week => 'w',
+ week => 'W',
+ year => 'Y',
+ # should we support these or what?
+ julian_day => 'J',
+ seconds_since_epoch => 's',
+ fractional_seconds => 'f',
);
sub _datetime_sql { "STRFTIME('%$part_map{$_[1]}', $_[2])" }