Guidelines for Datatypes Not Supported in SQL Server TDS
The following are the specific cases in which the Open Data Services ODBC driver employs special strategies to avoid losing information when converting data to SQL Server TDS datatypes:
-
SQL_TIMESTAMP
-
The SQL Server DATETIME datatype limits the fractional part of the seconds to a precision of 1/300 second (about 3 milliseconds). Some DBMSs allow greater precision. The Open Data Services ODBC driver converts TIMESTAMP values sent as CHAR or VARCHAR data in ISO format (yyyy-mm-dd.hh.mm.ss.fffffffff) with fractional seconds of up to nine digits (the ODBC limit of precision). For example, this is done when the TDS datatype is a form of character but the ODBC datatype in the metadata is SQL_TIMESTAMP. DBMS DATE and TIME datatypes don't have this problem because they can be represented exactly by the SQL Server DATETIME datatype.
-
SQL_BIGINT
-
SQL Server does not have a native datatype to exactly represent a SQL_BIGINT. The Open Data Services ODBC driver converts BIGINT values sent as character data without loss of significance. This is done when the TDS datatype is a form of character and the ODBC datatype is SQL_BIGINT. The Open Data Services application could also convert SQL_BIGINT values to SRVDECIMAL values with a precision of 19.
These conversions are usually specified by SET statements in the initialization strings, either in the resources DLL or in ODBC.INI.