diff --git a/lib/active_record/connection_adapters/sqlserver/type/date.rb b/lib/active_record/connection_adapters/sqlserver/type/date.rb index 56e652135..3fb93b002 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/date.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/date.rb @@ -38,7 +38,7 @@ def fast_string_to_date(string) end def fast_string_to_date_format - ::Date::DATE_FORMATS[:_sqlserver_dateformat] + ActiveSupport::DateFormats.lookup(:_sqlserver_dateformat) end end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/datetime.rb b/lib/active_record/connection_adapters/sqlserver/type/datetime.rb index d1d8f739f..f7d25d9fd 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/datetime.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/datetime.rb @@ -42,7 +42,7 @@ def fast_string_to_time(string) end def fast_string_to_time_format - "#{::Time::DATE_FORMATS[:_sqlserver_datetime]}.%N" + "#{::ActiveSupport::TimeFormats.lookup(:_sqlserver_datetime)}.%N" end end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/smalldatetime.rb b/lib/active_record/connection_adapters/sqlserver/type/smalldatetime.rb index 9ac526a41..332eed930 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/smalldatetime.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/smalldatetime.rb @@ -16,7 +16,7 @@ def sqlserver_type private def fast_string_to_time_format - ::Time::DATE_FORMATS[:_sqlserver_datetime] + ::ActiveSupport::TimeFormats.lookup(:_sqlserver_datetime) end def apply_seconds_precision(value) diff --git a/lib/active_record/connection_adapters/sqlserver_adapter.rb b/lib/active_record/connection_adapters/sqlserver_adapter.rb index fd7d33309..586618c75 100644 --- a/lib/active_record/connection_adapters/sqlserver_adapter.rb +++ b/lib/active_record/connection_adapters/sqlserver_adapter.rb @@ -521,16 +521,17 @@ def connection_errors def initialize_dateformatter @database_dateformat = user_options_dateformat a, b, c = @database_dateformat.each_char.to_a - [a, b, c].each { |f| f.upcase! if f == "y" } + dateformat = "%#{a}-%#{b}-%#{c}" - ::Date::DATE_FORMATS[:_sqlserver_dateformat] = dateformat - ::Time::DATE_FORMATS[:_sqlserver_dateformat] = dateformat - ::Time::DATE_FORMATS[:_sqlserver_time] = "%H:%M:%S" - ::Time::DATE_FORMATS[:_sqlserver_datetime] = "#{dateformat} %H:%M:%S" - ::Time::DATE_FORMATS[:_sqlserver_datetimeoffset] = lambda { |time| + + ActiveSupport::DateFormats.register(:_sqlserver_dateformat, dateformat) + ActiveSupport::TimeFormats.register(:_sqlserver_dateformat, dateformat) + ActiveSupport::TimeFormats.register(:_sqlserver_time, "%H:%M:%S") + ActiveSupport::TimeFormats.register(:_sqlserver_datetime, "#{dateformat} %H:%M:%S") + ActiveSupport::TimeFormats.register(:_sqlserver_datetimeoffset, lambda { |time| time.strftime "#{dateformat} %H:%M:%S.%9N #{time.formatted_offset}" - } + }) end def version_year diff --git a/test/cases/adapter_test_sqlserver.rb b/test/cases/adapter_test_sqlserver.rb index b6c35f210..4fff78dff 100644 --- a/test/cases/adapter_test_sqlserver.rb +++ b/test/cases/adapter_test_sqlserver.rb @@ -157,9 +157,9 @@ class AdapterTestSQLServer < ActiveRecord::TestCase assert_equal "mdy", dateformat end - it "has a dateformatter" do - assert Date::DATE_FORMATS[:_sqlserver_dateformat] - assert Time::DATE_FORMATS[:_sqlserver_dateformat] + it "has a date formatter" do + assert ActiveSupport::DateFormats.lookup(:_sqlserver_dateformat) + assert ActiveSupport::TimeFormats.lookup(:_sqlserver_dateformat) end it "does a datetime insertion when language is german" do