CString类型数据转化为sql数据库datetime类型

来源:互联网 发布:淘宝上的扎小人灵验吗 编辑:程序博客网 时间:2024/06/03 22:57
把CString类型数据转化为sql数据库datetime类型
2010-03-25 15:27

最近在做一个winCE方面的应用程序其中有一个要根据输入的字符串查询数据库的问题。sql数据库中的数据时datetime类型的,由于类型的不匹配在程序中总是查询不到相应时间的数据,但是数据库中确实存在此数据,例如输入“2003-10-27 6:24:37”数据库中存在此记录,但是就是查不到。以下是进行相应的数据转化

方法一:

strcstring="2003-10-27 6:24:37"; //cstring--->coledatetime
colevariant vtime(strcstring);
vtime.changetype(vt_date);
coledatetime time4=vtime;

coledatetime time1(1977,4,16,2,2,2); //coledatatime--->ctime
systemtime systime;
varianttimetosystemtime(time1, &systime);
ctime tm(systime);

方法二:

如果CString str="2002-01-01";
int year=atoi(str.Left(4));
int month=atoi(str.Mid(5,2));
int day=atoi(str.Right(2));
CTime t(year,month,day,0,0,0);  

方法三:

int sscanf( const char *buffer, const char *format [, argument ] ... );

如果CString str="2002-01-01"; 就:   
sscanf(str, "%d-%d-%d", &year, &month, &day);
CTime t(year,month,day,0,0,0);  

方法四:

CString sDate = "2003-09-27";
COleDateTime dt;
dt.ParseDateTime(sDate);
SYSTEMTIME st;
dt.GetAsSystemTime(st);
CTime tm(st);

CString 转换成CTime:

CString strCString="2004-08-12 14:45:22";
COleVariant vtime(strCString);
vtime.ChangeType(VT_DATE);
COleDateTime time4=vtime;
SYSTEMTIME systime;
VariantTimeToSystemTime(time4, &systime);
CTime tm(systime); //CString=======>CTime

再是把CTime转为字符串

CString str;
CTime t = CTime::GetCurrentTime();
str.Format("%d-%d-%d",t.GetYear(),t.GetMonth(),t.GetDay());

CString strTime;
CTime tTime = CTime::GetCurrentTime();
strTime = tTime.Format("%Y-%m-%d %H:%M:%S");

获取当前时间。
datetime = COleDateTime::GetCurrentTime();
CTime和COleDateTime具有几乎同样的功能。
与CTime相比, COleDateTime的优点在于它支持DWORD变量。
COleDateTime使用的位数是双浮点的两倍,既然CTime只是简单地计算从1970年1月1日之后经过的秒数,所以到了2 0 3 7年它将达到4 2 9 4 9 6 7 2 9 5,从而不能再使用。
//CString--->COleDateTime
COleVariant vtime(strCString);COleDateTime time4=vtime;
//CTime--->time_t
COleDateTime time3(time2);
//time_t--->COleDateTime.


//CString COleDateTime CTime互相转换
//CString--->COleDateTime
strCString="2003-10-27 6:24:37";
COleVariant vtime(strCString);
vtime.ChangeType(VT_DATE);
COleDateTime time4=vtime;

//COleDataTime--->CTime
COleDateTime time1(1977,4,16,2,2,2);
SYSTEMTIME systime;
VariantTimeToSystemTime(time1, &systime);
CTime tm(systime);

//CTime-->COleDateTime
time_t time2=tm.GetTime(); //CTime--->time_t
COleDateTime time3(time2); //time_t--->COleDateTime

CString str = tDate.Format(_T("%Y-%m-%d"));

//COleDataTime--->CTime  
COleDateTime   time1(1977,4,16,2,2,2);  
SYSTEMTIME   systime;  
VariantTimeToSystemTime(time1,   &systime);  
CTime   tm(systime);


参考附录

    {
     CString strCString="ABC";
     char strchar[256],*pstr;
    
     pstr=(LPSTR)(LPCTSTR)strCString; //CString---->char*
     strcpy(strchar,(LPSTR)(LPCTSTR)strCString); //CString---->char[]
    
     _bstr_t strbstr=pstr; //char*---->_bstr_t
     WCHAR *strWCHAR=strbstr; //b_str_t--->UNICODE
    
     strbstr=strWCHAR;
     pstr=strbstr; //UNICODE---->char*
    
     strCString="10";
     int istr=atoi((LPSTR)(LPCTSTR)strCString); //CString、char[]、char*------>int
     strCString.Format("%d",istr); //int----->CString
     sprintf(strchar,"%d",istr); //int----->char[]
    
     pstr=new char[256]; //字符串申请空间
     strcpy(pstr,"ABC"); //字符串赋值
     delete []pstr; //字符串释放
    
     string strstring="ABC";
     pstr=(char*)strstring.c_str(); //string---->char*
    
     strCString="2003-10-27 6:24:37"; //CString--->COleDateTime
     COleVariant vtime(strCString);
     vtime.ChangeType(VT_DATE);
     COleDateTime time4=vtime;
    
    
    
     COleDateTime time1(1977,4,16,2,2,2); //COleDataTime--->CTime
     SYSTEMTIME systime;
     VariantTimeToSystemTime(time1, &systime);
     CTime tm(systime);
    
     time_t time2=tm.GetTime(); //CTime--->time_t
     COleDateTime time3(time2); //time_t--->COleDateTime
    
     //判断字符串是否是某种类型
     CString sValue("123.1");
     COleVariant vValue(sValue);
    
     BOOL bStrIsFloat = (SUCCEEDED(VariantChangeType(&vValue, &vValue, 0, VT_R8)) && sValue.Find(''.'') != -1);
     if(bStrIsFloat)
     {
     AfxMessageBox("浮点");
     }
    }

另外介绍一个强大的本问题资源   

原创粉丝点击