[freetds] I can't get the datatype DATE correctly using odbc, anyone can help me?
Ou Liu
ou at qbt.com
Wed Jan 8 17:09:52 EST 2003
Hi, everyone
I am using FreeTDS/iODBC to get some date from a MSSQL2K Server, however I
met problem when I try to get data of type DATE. Here is my problem
(1) I am using SPARC/Solaris 8 as client machine, iODBC as driver manager,
FreeTDS as odbc driver, MSSQL2K on another Win2K machine as server.
(2) I create a table 'test' on the MSSQL2k:
CREATE TABLE test (dtm DATETIME);
INSERT INTO test VALUES("2002-02-23 10:02:03");
(3) Now I use the tsql to fetch the whole table :
SELECT * FROM test;
Everything runs ok, I got what I need.
(4) But When I try to use ODBC API to get it:(the m_hstmt is ok, I am sure)
SQLDescribeCol(m_hstmt, col + 1, (SQLCHAR *) name, \
sizeof(name), NULL, &colType, &colSize, \
&colScale, &colNullable);
switch(colType)
{
...
case SQL_TYPE_TIMESTAMP:
colType = SQL_C_CHAR;
{
TIMESTAMP_STRUCT tstamp;
memset((void*) &tstamp, 0, sizeof(TIMESTAMP_STRUCT));
SQLGetData(m_hstmt, col + 1, colType, &tstamp, colSize + 1, &cbSize);
....
Now the result I get in the tstamp is all rubbish, I don't know why and
then I turn to use string instead of
TIMESTAMP_STRUCT. Instead of the last line I wrote:
char* temp = (char*) malloc(100);
memset((void*) temp, 0, 100);
SQLGetData(m_hstmt, col + 1, colType, temp, 100, &cbSize);
Ok, Now I got some result, but only "2002-02-23" in the temp, and I lost
the "10:02:03".
Can anybody help me, or is this problem solved in recent version? I didn't
take a look at the cvs for 3 weeks and seems it down now.
Any help is greatly appreciated.
Ou
More information about the FreeTDS
mailing list