……
COleDateTime SendTime = COleDateTime::GetCurrentTime();
sql.Empty();
sql.Format("UPDATE table SET Send_Time =  %.9lf 
           WHERE ID = 1",SendTime.m_dt);
m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText);
以上语句能正确执行,但写入sql server中的时间会比系统当前时间 多两天 ,比如9-18显示为9-20,郁闷啊,谁帮帮我

解决方案 »

  1.   

    COleVariant Date1;
    COleDateTime Date2,Date4;
    CString Date3;
    // Date2.GetCurrentTime(); 
    Date1 =(COleVariant)Date2.GetCurrentTime();
    Date4=Date1.date;
    Date3=Date4.Format("%Y-%m-%d %H:%M:%S"); 
    ::AfxMessageBox(Date3);
      

  2.   

    COleVariant Date1;
    COleDateTime Date2,Date4;
    CString Date3;
    // Date2.GetCurrentTime(); 
    Date1 =(COleVariant)Date2.GetCurrentTime();
    Date4=Date1.date;
    Date3=Date4.Format("%Y-%m-%d %H:%M:%S"); 
    ::AfxMessageBox(Date3);
      

  3.   

    在MSDN中说:
    SendTime.m_dt 为date 类型
    而date类型值为0时表示为30 December 1899, midnight
    为2.00时表示为1 January 1900, midnight
    在sql server 中在datetime类型中写入0值时,日期显示为1900-1-1正好差两天,这就是VC与sql server中日期类型的数值表示不同造成的。
    可以这样:
    sql.Format("UPDATE table SET Send_Time =  '%s'
               WHERE ID = 1",SendTime.Format("%Y-%m-%d %H:%M:%S"));
    m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText);