Skip to content

Commit 1bd52f1

Browse files
committed
Fix datetime precision regression
1 parent 965aa34 commit 1bd52f1

File tree

1 file changed

+5
-9
lines changed

1 file changed

+5
-9
lines changed

lib/active_record/connection_adapters/sqlserver/type/time_value_fractional.rb

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,19 @@ module TimeValueFractional
1010
def apply_seconds_precision(value)
1111
return value if !value.respond_to?(fractional_property) || value.send(fractional_property).zero?
1212
value.change fractional_property => seconds_precision(value)
13-
14-
millis = seconds_precision(value).to_i
15-
value = value.change fractional_property => millis % fractional_operator
16-
value + millis / fractional_operator
1713
end
1814

1915
def seconds_precision(value)
2016
return 0 if fractional_scale == 0
21-
seconds = value.send(fractional_property).to_d / fractional_operator.to_d
22-
seconds = ((seconds / fractional_precision).round * fractional_precision).round(fractional_scale)
17+
seconds = value.send(fractional_property).to_f / fractional_operator.to_f
18+
seconds = ((seconds * (1 / fractional_precision)).round / (1 / fractional_precision)).round(fractional_scale)
2319
(seconds * fractional_operator).round(0).to_i
2420
end
2521

2622
def quote_fractional(value)
2723
return 0 if fractional_scale == 0
2824
frac_seconds = seconds_precision(value)
29-
seconds = (frac_seconds.to_d / fractional_operator.to_d).round(fractional_scale)
25+
seconds = (frac_seconds.to_f / fractional_operator.to_f).round(fractional_scale)
3026
seconds.to_d.to_s.split('.').last.to(fractional_scale-1)
3127
end
3228

@@ -43,7 +39,7 @@ def fractional_operator
4339
end
4440

4541
def fractional_precision
46-
BigDecimal('0.003333')
42+
0.00333
4743
end
4844

4945
def fractional_scale
@@ -72,7 +68,7 @@ def fractional_digits
7268
end
7369

7470
def fractional_precision
75-
BigDecimal('0.0000001')
71+
0.0000001
7672
end
7773

7874
def fractional_scale

0 commit comments

Comments
 (0)