首先,先看一个怎么输出time_类型数据例子:
strftime (char *s, size_t maxsize, const char *format, const struct tm *tp); //格式化输出函数
#include <stdio.h>
#include <time.h>
int main ()
{
static char str_time[100];
struct tm *local_time = NULL;
time_t utc_time;
utc_time = time (NULL);
local_time = localtime(&utc_time);
strftime(str_time, sizeof(str_time), "%Y-%m-%d,%H:%M:%S", local_time);
printf ("Time: %s/n", str_time);
return 0;
}
运行输出:
./time
Time: 2009-08-14,13:59:22
原文:http://blog.csdn.net/c_spark/article/details/4446460
现在我们来看本文的主题:
第一,连接数据库,
///<初始化
StartOciLib(oci_error_callback );
///<连接数据库
m_pConntion = OCI_ConnectionCreate(m_strDBConn.c_str(), m_strUserName.c_str(),
m_strPwd.c_str(), OCI_SESSION_DEFAULT);
第二,解析数据库的字段UPDATE_TIME,
上面是数据库读出的字段格式,怎么才能对到MFC的ClistBox上面呢?
2,执行SQL语句
pState = OCI_StatementCreate(m_pConntion);
if (NULL == pState)
{
return false;
}
///<执行SQL,并返回结果集
pResult = ExecuteQuery_Select( pState, strSQL);
3.对返回的结果集进行解析
ClistBox的控件变量是:m_List_Cstrl.
///<解析字段: UPDATE_TIME 创建时间
<pre class="cpp" name="code"> while (OCI_FetchNext(pResult))
{
do{ if (OCI_IsNull2(pResult,"UPDATE_TIME"))
{
CString str25_6="";
str25_6.Format("第%d 行的字段Update_Time解析为空,设为-1", num );
m_List_Ctrl.SetItemText(num,row_num++,str25_6);
}
else
{
<strong><span style="color:#3366ff;"> OCI_Date * s_time =NULL;
s_time = OCI_GetDate2(pResult, "UPDATE_TIME"); //从结果解对到OCI_Date类型的数据
static char str_time[100];
struct tm *local_time = NULL;
time_t utc_time;
utc_time = time (NULL);
OCI_DateToCTime(s_time, NULL ,&utc_time); //把OCI_Date类型转换为time_t;
local_time = localtime(&utc_time); //把time_t转换为 strut tm类型
strftime(str_time, sizeof(str_time), "%Y-%m-%d %H:%M:%S", local_time); //把strut tm类型通过strftime</span></strong>
<strong><span style="color:#3366ff;"> //使之按照"%Y-%m-%d %H:%M:%S格式显示</span></strong>
CString straa = "";
straa.Format("%s",str_time);
m_List_Ctrl.SetItemText(num,row_num++,straa); //使之在CListBox显示
} while (0);
num++;
}
上面蓝色的是类型转换的核心。
这样就可以完成从数据库date类型到MFC工程的时间类型显示了,希望能对你有所帮助。