я создаю таблицу a_tb
используя следующий SQL в командной строке MySQL:Как получить поле с типом временной метки в MySQL через ODBC с помощью CPP в окнах
create table a_tb(id int not null auto_increment, w_time timestamp default current_timestamp,a int default -1, PRIMARY KEY (id));
+--------+-----------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-----------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| w_time | timestamp | NO | | CURRENT_TIMESTAMP | |
| a | int(11) | YES | | -1 | |
+--------+-----------+------+-----+-------------------+----------------+
И я использую insert into a_tb (a) values (2);
Затем я получаю:
+----+---------------------+------+
| id | w_time | a |
+----+---------------------+------+
| 1 | 2016-11-22 17:09:34 | 2 |
+----+---------------------+------+
То, что я хочу сделать, это прочитать данные из a_tb
с помощью C++ с помощью ODBC. Я прочитал msdn и успешно получил доступ, чтобы получить данные из таблицы, используя код Connecting to a MySQL server using C++. Каждое поле в порядке, кроме отметки времени, в которой я всегда получаю некоторые странные числа. И то, что я попытался это следующим образом:
SQLTIMESTAMP tt[14];
SQLGetData(hstmt, 2, SQL_C_TIMESTAMP, tt, 0, &cbTestInt);
в консоли и
time_t tt;
SQLGetData(hstmt, 2, SQL_C_TIMESTAMP, &tt, 0, &cbTestInt);
я 4222219140663264
. и
SQLINTEGER sTestInt, cbTestStr;
SQLGetData(hstmt, 2, SQL_C_ULONG, &sTestInt, 0, &cbTestInt);
я 2016
.
Но я хочу получить 2016-11-22 17:09:34
. Я озадачен попытками многих методов ...
но я думаю, что '4222219140663264' не может быть преобразован в разумное время' strftime' –