我从SQLSERVER中取DATETIME类型的数据,存到了CDBVariant类型的数据中,可是当我向另外一个数据库中写的时候,却发现在CDBVariant.pdate中是按照年月日时刻的方式存放的,于是我有这样的问题:
1、写回去的时候就不知道是将日期和时刻全部写回去还是单独只写其中一个,
2、而且写日期我是会的,但是用INSERT INTO 语句则么样写回时刻呢?我试过这样:
   INSERT INTO myTable (myField) values (9:40:00)
可是好象检查SQL语句说有错误,不能执行
3、有没有一个直接转换的方式将得到的pdate结构的时间直接转换成SQLSERVER中的DATETIME形式?
谢谢!

解决方案 »

  1.   

    char buf[20];
    CDBVariant var;
    **.GetFieldValue(i,var);
    sprintf(buf,"%d-%d-%d",var.m_pDate->year,var.m_pDate->month,var.m_pDate->day);
    //这样类似的处理你就可以得到时间和日期的字符串,然后的类型转换可方便了
    参考http://community.csdn.net/Expert/topic/3275/3275491.xml?temp=2.955264E-02
      

  2.   

    CTime=m_pSet->Fields->GetItem("时间")->Value.date;
      

  3.   

    COleDateTime  yourTime;
    CString strTime;
    yourTime=m_pSet->Fields->GetItem("时间")->Value.date;
    strTime=yourTime.Format("%Y-%m-%d");
    就能得到如此的字符串:
    2004-07-26
      

  4.   

    请问没有直接将struct tagTIMESTAMP_STRUCT结构表示的时间转换成CTime的吗?
      

  5.   

    CTime yourTime(theTimeStruct);
    这不就行了
      

  6.   

    我使用case语句判断的数据类型,所以,不能在case语句下面定义变量,可是我的theTimeStruct的值是在case语句的地方才得到的值啊,有没有转换函数?
    谢谢!
      

  7.   

    to:MajorVon():
    CTime yourTime(theTimeStruct);
    这不就行了这个方法好像不行呢,说不能将这个结构转换成long
      

  8.   

    我用CTime tm(system);
    出现断言错误,
    请问这是为什么?
    COleDateTime oletime;
    SYSTEMTIME systime;
    str.Format("%d-%d-%d %d:%d:%d", pValue[i].m_pdate->year,
    pValue[i].m_pdate->month, pValue[i].m_pdate->day,
    pValue[i].m_pdate->hour,pValue[i].m_pdate->minute,
    pValue[i].m_pdate->second);
    COleVariant vtime(str);
    vtime.ChangeType(VT_DATE);
    oletime=vtime;
    VariantTimeToSystemTime(oletime, &systime);
    CTime* ptm=new CTime(systime);//执行这一步的时候出现断言错误,请执教阿
    str.Format("%ld",*ptm);
    delete ptm;