Commit | Line | Data |
84ddb3da |
1 | package # Hide from PAUSE |
d5dedbd6 |
2 | DBIx::Class::SQLMaker::MSSQL; |
84ddb3da |
3 | |
d5dedbd6 |
4 | use base qw( DBIx::Class::SQLMaker ); |
84ddb3da |
5 | |
6 | # |
7 | # MSSQL does not support ... OVER() ... RNO limits |
8 | # |
9 | sub _rno_default_order { |
10 | return \ '(SELECT(1))'; |
11 | } |
12 | |
d42d4906 |
13 | { |
14 | my %part_map = ( |
37256abd |
15 | year => 'year', |
16 | quarter => 'quarter', |
17 | month => 'month', |
18 | day_of_year => 'dayofyear', |
19 | day_of_month => 'day', |
20 | week => 'week', |
21 | day_of_week => 'weekday', |
22 | hour => 'hour', |
23 | minute => 'minute', |
24 | second => 'second', |
25 | millisecond => 'millisecond', |
d42d4906 |
26 | ); |
27 | |
2aedbd3d |
28 | my %diff_part_map = %part_map; |
37256abd |
29 | $diff_part_map{day} = delete $diff_part_map{day_of_year}; |
30 | delete $diff_part_map{day_of_month}; |
31 | delete $diff_part_map{day_of_week}; |
2aedbd3d |
32 | |
d42d4906 |
33 | sub _datetime_sql { "DATEPART('$part_map{$_[1]}', $_[2])" } |
2aedbd3d |
34 | sub _datetime_diff_sql { "DATEDIFF('$diff_part_map{$_[1]}', $_[2], $_[3])" } |
d42d4906 |
35 | } |
36 | |
37 | |
84ddb3da |
38 | 1; |