How to get SQL Server DateTime field in ODBC native client

匿名 (未验证) 提交于 2019-12-03 01:20:02

问题:

I'm have SQL Server table:

CREATE TABLE [dbo].[Table1](     [rec_id] [int] IDENTITY(1,1) NOT NULL,     [id] [int] NOT NULL,     [date] [datetime] NOT NULL,     [ps] [varchar](200) NULL ) ON [PRIMARY] 

I'm getting data by a code:

status = SQLExecDirect(statement, (SQLWCHAR*)TEXT("SELECT * FROM [DBNAME].[dbo].[Table1]"), SQL_NTS); cout << "SQLExecDirect returned " << status << "\r\n";     if (status == SQL_SUCCESS_WITH_INFO || status == SQL_SUCCESS)     {         int rec_id;         int id;         char date[64];         char ps[201] = { 0 };         while (SQLFetch(statement) == SQL_SUCCESS)         {             SQLGetData(statement, 1, SQL_C_ULONG, &rec_id, 0, NULL);             SQLGetData(statement, 2, SQL_C_ULONG, &id, 0, NULL);             SQLGetData(statement, 3, SQL_C_CHAR, date, 64, NULL);             SQLGetData(statement, 4, SQL_C_CHAR, ps, 201, &len);             cout << rec_id << " " << id << " " << date << " " << ps << " " << len << endl;         }     }     cout << "Connected;";     cin.get();     SQLDisconnect(connectHandle); 

But I'm get date field as char array in output: 2014-01-01 00:00:00.000 How to get this field, for example, in FILETIME format or in other more convenient C++ data type? Thanks.

回答1:

For date type, you should use SQL_C_DATE or SQL_C_TIMESTAMP. Example:

   TIMESTAMP_STRUCT ts;    SQLLEN           len;    SQLGetData(hstmt, 3, SQL_C_TIMESTAMP, &ts, sizeof(ts), &len);    printf("Date: %d-%d-%d %d:%d:%d.%d (%ld)\n",            ts.year, ts.month,ts.day, ts.hour, ts.minute, ts.second, ts.fraction, len); 

Hope this help.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!