语言是C++,代码如下
MYSQL *pdata;
MYSQL_RES *result;
MYSQL_ROW row;
MYSQL_FIELD* field;
char sqlcommand[80]; pdata = mysql_init(NULL);
pdata = mysql_real_connect(pdata, "localhost", "root", "leo", "2113", 0, NULL, 0); // 连接
mysql_query(pdata, "set names gbk"); // 设置读取简体中文if(pdata)
{
printf("ok, connected!\n");
sprintf(sqlcommand, "select * from %s", "qwer");
mysql_query(pdata, sqlcommand);
result = mysql_store_result(pdata); row = mysql_fetch_row(result); // 获得结果中的下一条记录
string s = row[1]; // 测试中文
printf("%s, %s, %d, %s\n", row[2], s.c_str(), atoi(row[0]), row[3]);
mysql_close(pdata);
} 里面有一行数据,其中第四列是timestamp类型的数据,现在读出来只是个字符串,有没有什么api能够自动将其转换成一个时间的结构?借贴再问下,mysql读取出来的结果都是字符串,有没有按照该列数据类型进行自动数据转换的功能呢?
MYSQL *pdata;
MYSQL_RES *result;
MYSQL_ROW row;
MYSQL_FIELD* field;
char sqlcommand[80]; pdata = mysql_init(NULL);
pdata = mysql_real_connect(pdata, "localhost", "root", "leo", "2113", 0, NULL, 0); // 连接
mysql_query(pdata, "set names gbk"); // 设置读取简体中文if(pdata)
{
printf("ok, connected!\n");
sprintf(sqlcommand, "select * from %s", "qwer");
mysql_query(pdata, sqlcommand);
result = mysql_store_result(pdata); row = mysql_fetch_row(result); // 获得结果中的下一条记录
string s = row[1]; // 测试中文
printf("%s, %s, %d, %s\n", row[2], s.c_str(), atoi(row[0]), row[3]);
mysql_close(pdata);
} 里面有一行数据,其中第四列是timestamp类型的数据,现在读出来只是个字符串,有没有什么api能够自动将其转换成一个时间的结构?借贴再问下,mysql读取出来的结果都是字符串,有没有按照该列数据类型进行自动数据转换的功能呢?
这个是可以用的,我的row[0]就是这么做的。只是row[3]存的是一个timestamp类型的值,不知道怎么转成可计算的时间数,我看到sqltypes.h里面有个结构typedef struct tagTIMESTAMP_STRUCT
{
SQLSMALLINT year;
SQLUSMALLINT month;
SQLUSMALLINT day;
SQLUSMALLINT hour;
SQLUSMALLINT minute;
SQLUSMALLINT second;
SQLUINTEGER fraction;
} TIMESTAMP_STRUCT;但是找不到相应的API,求赐教~~
我说的timestamp类型的数保存的是一个从1970-01-01 00::00::01到2038-01-09 03::14::07的一个日期。所以用from_unixtime()这个函数的得出的结果不是想要的。我照着你的思路想了个办法,就是用
select YEAR(ColumnName),MONTH(ColumnName)... from ...
一个个查出来,由于刚接触mysql,不知道这些函数是这么用的,见笑了。
结贴,谢谢大家。