If it is bug, then it is bug of ODBC driver.
What should FPC do if ODBC driver reports, that column is VARCHAR type ... simply create TStringField ...
As a workaround you can define type helper for TField f.e. something like this:
type
TFieldHelper = class helper for TField
function GetAsDateTime2: TDateTime;
end;
function TFieldHelper.GetAsDateTime2: TDateTime;
begin
if Self.DataType = ftString then
Result := StrToDateTime(Self.AsDateTime, DefaultSQLFormatSettings);
else
Result := Self.AsDateTime;