数据类型的转换,求教! 从SQL SERVER 数据库中读取的日期类型数据,将其显示到列表控件中,但由于不知何故,发生异常,问怎样将SQL中日期类型的数据转换为字符串类型?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个函数是自己写的吗?为什么我在MSDN里找不到呢? 试试强制转换呢 _variant_t var; var=pRecordset->GetCollect("time"); if(var.vt!=VT_NULL) { CString strTime = (LPCSTR)_bstr_t(var); } 强制转换不行,我一开始是使用: _variant_t vFieldValue=m_pRed->GetCollect("birthday"); strFieldValue=(char*)_bstr_t(vFieldValue); 这个运行后会发生异常! COleDateTime OleTime = m_pRed->GetCollect("birthday");CString strTime = OleTime.Format("%Y-%m-%d %H:%M:%S") try catch 看看异常的信息com 异常用 _com_error 转换应该是CString strFieldValue=(CString)(_bstr_t)vFieldValue.bstrVal; 我曾经是这样用的,不知道是不是很笨: 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 COleDateTime OleTime = m_pRed->GetCollect("birthday");CString strTime = OleTime.Format("%Y-%m-%d %H:%M:%S");一定没错,只要你的birthday为datetime类型,这种方法我就在使用。 出现异常极有可能是查询出来的记录集为空(假设你懂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"); ......} ADO初始化,连接数据库,打开记录集,读取数据,我全部成功,惟独当运行到日期转换这个函数出问题,并且日期记录肯定不是空记录,我将楼上的方法使用了还是不行,关键是要知道日期数据是以什么格式存储在计算机中, 不管数据库中是什么类型,好象转换成字符串都是一样的吧,试试下面这个:m_ListCtrl.SetItemText(i,j,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("birthday")); to junliu_0(驴子)谢谢你,我成功了! ClistCtrl 自绘,文字居中问题。。 请教一下,入门MFC的路径是什么? Access中的备注类型是什么类型,为什么CString的字符串无法写入? 怎样将string类型转化成const OLECHAR *? 在线等 各位大侠帮帮忙! 读写引导扇区问题 如何在32位平台下开发64位的软件 初学者的问题 如何将一个工程中编辑地对话框复制到另外一个工程中? 在debug下可以正确执行,在release下不能,请问如何解决? 一个有关程序运行的问题 计算机串口公母 请问使用什么软件可以实现下面的文本替换
if(var.vt!=VT_NULL)
{
CString strTime = (LPCSTR)_bstr_t(var);
}
_variant_t vFieldValue=m_pRed->GetCollect("birthday");
strFieldValue=(char*)_bstr_t(vFieldValue);
这个运行后会发生异常!
CString strTime = OleTime.Format("%Y-%m-%d %H:%M:%S")
com 异常用 _com_error
CString strFieldValue=(CString)(_bstr_t)vFieldValue.bstrVal;
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
CString strTime = OleTime.Format("%Y-%m-%d %H:%M:%S");
一定没错,只要你的birthday为datetime类型,这种方法我就在使用。
_variant_t VarLostValue = m_Record->GetCollect("birthday");
if (VT_DATE == VarLostValue.vt)
{
OleTime = VarLostValue;
CString strTime = OleTime.Format("%Y-%m-%d %H:%M:%S");
......
}
试试下面这个:m_ListCtrl.SetItemText(i,j,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("birthday"));