语言是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读取出来的结果都是字符串,有没有按照该列数据类型进行自动数据转换的功能呢?

解决方案 »

  1.   

    select now();只是获取系统当前的时间,我的意思是数据库里面已经有一条数据储存了时间,怎么从读取出来?用mysql_fetch_row 获取的数据都是字符串,怎么转成整数?
      

  2.   

    用mysql_fetch_row 获取的数据都是字符串,怎么转成整数?这个直接用你的开发语言中的功能啊。比如C的atoi() 
      

  3.   


    这个是可以用的,我的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,求赐教~~
      

  4.   

    timestamp 是UNIX的时间格式,记录的是自 1900-01-01 到此刻的秒数。两种方法,一种是自己换算,C中没有这个函数.另一样做法,是在SQL语句直接改成  SELECT FROM_UNIXTIME(columnName) from ...
      

  5.   

    回LS:
    我说的timestamp类型的数保存的是一个从1970-01-01 00::00::01到2038-01-09 03::14::07的一个日期。所以用from_unixtime()这个函数的得出的结果不是想要的。我照着你的思路想了个办法,就是用
    select YEAR(ColumnName),MONTH(ColumnName)... from ...
    一个个查出来,由于刚接触mysql,不知道这些函数是这么用的,见笑了。
    结贴,谢谢大家。