class ArJdbc::MSSQL::TimeType

@private

Public Class Methods

new(options = {}) click to toggle source
Calls superclass method
# File lib/arjdbc/mssql/types.rb, line 196
def initialize(options = {})
  super; @precision = nil if @precision == 7
end

Public Instance Methods

type_cast_for_schema(value) click to toggle source
Calls superclass method
# File lib/arjdbc/mssql/types.rb, line 200
def type_cast_for_schema(value)
  value.acts_like?(:string) ? "'#{value}'" : super
end

Private Instance Methods

cast_usec(value) click to toggle source
# File lib/arjdbc/mssql/types.rb, line 224
def cast_usec(value)
  (usec_to_seconds_frction(value) * 1_000_000).to_i
end
cast_value(value) click to toggle source
# File lib/arjdbc/mssql/types.rb, line 206
def cast_value(value)
  value = value.respond_to?(:usec) ?
    value.change(year: 2000, month: 01, day: 01) :
      cast_value_like_super(value)

  return if value.blank?
  value.change usec: cast_usec(value)
end
cast_value_like_super(value) click to toggle source
# File lib/arjdbc/mssql/types.rb, line 215
def cast_value_like_super(value)
  return value unless value.is_a?(::String)
  return if value.empty?

  dummy_value = "2000-01-01 #{value}"

  fast_string_to_time(dummy_value) || DateTime.parse(dummy_value).to_time # rescue nil
end
usec_to_seconds_frction(value) click to toggle source
# File lib/arjdbc/mssql/types.rb, line 228
def usec_to_seconds_frction(value)
  (value.usec.to_f / 1_000_000.0).round(precision || 7)
end