Rails, SQL Server 2000 and Dates Pre 1970

When using dates in Rails with SQL server everything seems to work great until I attempt to use a date prior to 1970. I can see the date is correct in the database but when I attempt to read the value it is returned as nil, if I ask for it again I get the correct date.

I can write dates prior to 1970 into the database however I think is facilitated by validates_date plugin which seems to work a charm. Without the plugin I think I would get errors.

If in my controller I ask for the date to be formated as string and just rescue the failure as it always fails first time, then the date works from then on, but I would really like to get this fixed so I dont have to perform this little dance every time I use a date field.

I have found a bug report http://dev.rubyonrails.org/ticket/3430 which was opened around 2 years ago and there are a couple of suggestions but none seem to work for me.

Does anyone have any suggestions?

forgot to add that its rails 1.2.3

Here is the console feedback showing the issue as well.

can = Candidate.find(1)

can = Candidate.find(1) => #<Candidate:0x4658160 @attributes={"canid"=>"", "minority_id"=>nil, "adjustment_assessment"=>"", "adjustment_learning"=>"", "sensory_id"=>nil, "gender"=>"Male", "firstname"=>"B ", "lastname"=>"Jones", "id"=>1, "assessment_id"=>1, "note_take_method_id"=>nil, "help_achieve"=>"", "additional_evidence"=>"", "date_of_birth"=>"1901/04/04 00:00:00"}>

can.date_of_birth

can.date_of_birth => nil

can.date_of_birth

can.date_of_birth => #<DateTime: 4830957/2,0,2299161>

Its just plain weird.

I know I keep talking to myself but here goes nothing.

In the model I have added:

def date_of_birth     Date.parse(self.date_of_birth_before_type_cast) end

Which means that the date returns first time, so the problem is definately to do with the casting of the field. How I fix this I don't know yet, but at least the workaround seems to do the trick. And I only need to add it to each model using dates but better than in the controllers.