我在SQL Server中定义了一个字段类型为 datetime 在VC+中想转换成CString
怎么 做? 谢谢!

解决方案 »

  1.   

    在VC++中我是这样转换的:m_time1=m_pRecordset->GetCollect("time").bstrVal;
    UpdateData(false);
    //m_time1是控件变量 ,"time"是数据库的字段(类型为datetime) 结果没有错误但没有显示
      

  2.   

    你可以类似如下处理,应该还是可以的
    CTime time=CTime::GetCurrentTime();
    CString strNow=time.Format("%Y-%m-%d %H:%M:%S");
      

  3.   

    你可以类似如下处理,应该还是可以的
    CTime time=CTime::GetCurrentTime();
    CString strNow=time.Format("%Y-%m-%d %H:%M:%S");
      

  4.   

    CString CADODemoView::VariantToCtring(VARIANT var)
    {
    CString strValue;
    _variant_t var_t;
    _bstr_t bst_t;
    time_t cur_time;
    CTime time_value;
    COleCurrency var_currency;
    switch(var.vt)
    {
    case VT_EMPTY:
    strValue=_T("");
    break;
    case VT_UI1:
    strValue.Format("%d",var.bVal);
    break;
    case VT_I2:
    strValue.Format("%d",var.iVal);
    break;
    case VT_I4:
    strValue.Format("%d",var.lVal);
    break;
    case VT_R4:
    strValue.Format("%f",var.fltVal);
    break;
    case VT_R8:
    strValue.Format("%f",var.dblVal);
    break;
    case VT_CY:
    var_currency=var;
    strValue=var_currency.Format(0);
    break;
    case VT_BSTR:
    var_t=var;
    bst_t=var_t;
    strValue.Format("%s",(const char* )bst_t);
    break;
    case VT_NULL:
    strValue=_T("");
    break;
    case VT_DATE:
    cur_time=var.date;
    time_value=cur_time;
    strValue=time_value.Format("%A,%B,%d,%Y");
    break;
    case VT_BOOL:
    strValue.Format("%d",var.boolVal);
    break;
    default:
    strValue=_T("");
    break;
    }
    return strValue;}BOOL CADODemoView::ConstructVar(CString strValue, int type, VARIANT *var)
    {
    COleDateTime var_date;
    CURRENCY cy;
    cy.Hi=0;
    switch(type)
    {
    case adInteger:
    var->vt=VT_I4;
    var->lVal=atoi(strValue);
    break;
    case adCurrency:
    var->vt=VT_CY;
    cy.Lo=atoi(strValue);
    cy.int64=atoi(strValue);
    var->cyVal=cy;
    break;
    case adChar:
    case adVarWChar:
    var->vt=VT_BSTR;
    var->bstrVal=(_bstr_t)strValue;
    break;
    case adDBTimeStamp:
    var->vt=VT_DATE;
    var->date=var_date;
    break;
    default:
    var->vt=VT_EMPTY;
    break;
    }
    return TRUE;
    }
      

  5.   

    直接在SQL里转换可能更好,也比较简单。
    SELECT CAST(GETDATE() AS VARCHAR)
      

  6.   

    可以这么做:
        _variant_t vTime;
        COleDateTime Time;
        CString strTime;
        vTime=m_pRecordset->GetCollect("time");
        Time=vTime;//可以直接赋值
        strTime=time.Format("%Y-%m-%d %H:%M:%S");