从SQL SERVER 数据库中读取的日期类型数据,将其显示到列表控件中,但由于不知何故,发生异常,问怎样将SQL中日期类型的数据转换为字符串类型?谢谢!

解决方案 »

  1.   

    这个函数是自己写的吗?为什么我在MSDN里找不到呢?
      

  2.   

    试试强制转换呢 _variant_t var;                  var=pRecordset->GetCollect("time");
    if(var.vt!=VT_NULL)
    {
    CString strTime = (LPCSTR)_bstr_t(var);

    }
      

  3.   

    强制转换不行,我一开始是使用:
                  _variant_t vFieldValue=m_pRed->GetCollect("birthday");
                       strFieldValue=(char*)_bstr_t(vFieldValue);
         这个运行后会发生异常!
      

  4.   

    COleDateTime OleTime = m_pRed->GetCollect("birthday");
    CString strTime = OleTime.Format("%Y-%m-%d %H:%M:%S")
      

  5.   

    try catch 看看异常的信息
    com 异常用 _com_error
      

  6.   

    转换应该是
    CString strFieldValue=(CString)(_bstr_t)vFieldValue.bstrVal;
      

  7.   

    我曾经是这样用的,不知道是不是很笨:  m_recordset.GetFieldValue("TIME",m_var);
      m_time.Format("%.4d-%.2d-%.2d %.2d:%.2d:%.2d", m_var.m_pdate->year,m_var.m_pdate->month,m_var.m_pdate->day,m_var.m_pdate->hour,m_var.m_pdate->minute,m_var.m_pdate->second);  //其实这一句就是一个一个的转换,最后的格式是: 2006-01-03 00:15:45
      

  8.   

    COleDateTime OleTime = m_pRed->GetCollect("birthday");
    CString strTime = OleTime.Format("%Y-%m-%d %H:%M:%S");
    一定没错,只要你的birthday为datetime类型,这种方法我就在使用。
      

  9.   

    出现异常极有可能是查询出来的记录集为空(假设你懂ADO编程,那么ADO初始化,创建记录集,实例化,连接数据库等假设你都做了)。若要判断为空,或如下:
    _variant_t VarLostValue = m_Record->GetCollect("birthday");
    if (VT_DATE == VarLostValue.vt)
    {
        OleTime = VarLostValue;
        CString strTime = OleTime.Format("%Y-%m-%d %H:%M:%S");
        ......
    }
      

  10.   

    ADO初始化,连接数据库,打开记录集,读取数据,我全部成功,惟独当运行到日期转换这个函数出问题,并且日期记录肯定不是空记录,我将楼上的方法使用了还是不行,关键是要知道日期数据是以什么格式存储在计算机中,
      

  11.   

    不管数据库中是什么类型,好象转换成字符串都是一样的吧,
    试试下面这个:m_ListCtrl.SetItemText(i,j,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("birthday"));
      

  12.   

    to junliu_0(驴子)谢谢你,我成功了!