我从SQLSERVER中取DATETIME类型的数据,存到了CDBVariant类型的数据中,可是当我向另外一个数据库中写的时候,却发现在CDBVariant.pdate中是按照年月日时刻的方式存放的,于是我有这样的问题:
1、写回去的时候就不知道是将日期和时刻全部写回去还是单独只写其中一个,
2、而且写日期我是会的,但是用INSERT INTO 语句则么样写回时刻呢?我试过这样:
INSERT INTO myTable (myField) values (9:40:00)
可是好象检查SQL语句说有错误,不能执行
3、有没有一个直接转换的方式将得到的pdate结构的时间直接转换成SQLSERVER中的DATETIME形式?
谢谢!
1、写回去的时候就不知道是将日期和时刻全部写回去还是单独只写其中一个,
2、而且写日期我是会的,但是用INSERT INTO 语句则么样写回时刻呢?我试过这样:
INSERT INTO myTable (myField) values (9:40:00)
可是好象检查SQL语句说有错误,不能执行
3、有没有一个直接转换的方式将得到的pdate结构的时间直接转换成SQLSERVER中的DATETIME形式?
谢谢!
CDBVariant var;
**.GetFieldValue(i,var);
sprintf(buf,"%d-%d-%d",var.m_pDate->year,var.m_pDate->month,var.m_pDate->day);
//这样类似的处理你就可以得到时间和日期的字符串,然后的类型转换可方便了
参考http://community.csdn.net/Expert/topic/3275/3275491.xml?temp=2.955264E-02
CString strTime;
yourTime=m_pSet->Fields->GetItem("时间")->Value.date;
strTime=yourTime.Format("%Y-%m-%d");
就能得到如此的字符串:
2004-07-26
这不就行了
谢谢!
CTime yourTime(theTimeStruct);
这不就行了这个方法好像不行呢,说不能将这个结构转换成long
出现断言错误,
请问这是为什么?
COleDateTime oletime;
SYSTEMTIME systime;
str.Format("%d-%d-%d %d:%d:%d", pValue[i].m_pdate->year,
pValue[i].m_pdate->month, pValue[i].m_pdate->day,
pValue[i].m_pdate->hour,pValue[i].m_pdate->minute,
pValue[i].m_pdate->second);
COleVariant vtime(str);
vtime.ChangeType(VT_DATE);
oletime=vtime;
VariantTimeToSystemTime(oletime, &systime);
CTime* ptm=new CTime(systime);//执行这一步的时候出现断言错误,请执教阿
str.Format("%ld",*ptm);
delete ptm;