module ActiveRecord::ConnectionAdapters::SQLServer::Type::TimeValueFractional

Private Instance Methods

cast_fractional(value) click to toggle source
# File lib/active_record/connection_adapters/sqlserver/type/time_value_fractional.rb, line 10
def cast_fractional(value)
  return value if !value.respond_to?(fractional_property) || value.send(fractional_property).zero?
  frac_seconds = if fractional_scale == 0
                   0
                 else
                   seconds = value.send(fractional_property).to_f / fractional_operator.to_f
                   seconds = ((seconds * (1 / fractional_precision)).round / (1 / fractional_precision)).round(fractional_scale)
                   (seconds * fractional_operator).to_i
                 end
  value.change fractional_property => frac_seconds
end
fractional_digits() click to toggle source
# File lib/active_record/connection_adapters/sqlserver/type/time_value_fractional.rb, line 31
def fractional_digits
  6
end
fractional_operator() click to toggle source
# File lib/active_record/connection_adapters/sqlserver/type/time_value_fractional.rb, line 35
def fractional_operator
  10 ** fractional_digits
end
fractional_precision() click to toggle source
# File lib/active_record/connection_adapters/sqlserver/type/time_value_fractional.rb, line 39
def fractional_precision
  0.00333
end
fractional_property() click to toggle source
# File lib/active_record/connection_adapters/sqlserver/type/time_value_fractional.rb, line 27
def fractional_property
  :usec
end
fractional_scale() click to toggle source
# File lib/active_record/connection_adapters/sqlserver/type/time_value_fractional.rb, line 43
def fractional_scale
  3
end
quote_fractional(value) click to toggle source
# File lib/active_record/connection_adapters/sqlserver/type/time_value_fractional.rb, line 22
def quote_fractional(value)
  seconds = (value.send(fractional_property).to_f / fractional_operator.to_f).round(fractional_scale)
  seconds.to_d.to_s.split('.').last.to(fractional_scale-1)
end