CString dayBegin,dayEnd;GetDlgItemText(IDC_DATE_BEGIN,dayBegin);
GetDlgItemText(IDC_DATE_END,dayEnd);
现在dayBegin,dayEnd中的数据格式如下:
2004-9-7我准备用这个东西检索一个数据库中的日志记录,显示在dayBegin,dayEnd之间的数据。我初步的循环是:
得到数据库条目中对应的记录时间,其格式也转换成了
2004-9-7(CString varValue)
我该怎么让他比较呢?
if(数据库记录时间在dayBegin,dayEnd之间)
{
   把日志记录显示在列表框中;
}
请大虾告诉我这个if的判断条件该怎么写。
简单的字符串问题,是吗?
我的写法是:
  if((varValue.Compare(dayBegin)>0)&&(varValue.Compare(dayEnd)<0)) 
或者
 if((varValue〉=dayBegin)&&(varValue<=dayEnd)) 好像都不对啊!
请指点,多谢了!

解决方案 »

  1.   

    可以这样先将所有的日期字符串转化为日期型如COleDateTime:
    CString dayBegin,dayEnd;
    COleVariant varTemp(dayBegin);
    COleDateTime oleTimeBegin(varTemp);
    COleVariant varTemp1(dayEnd);
    COleDateTime oleTimeEnd(varTemp1);
    .....
    COleVariant varTemp2(varValue);
    COleDateTime oleTimeValue(varTemp2);
    ..
    if(oleTimeValue >= oleTimeBegin && oleTimeValue <= oleTimeEnd)
    ..
      

  2.   

    CString strBegin, strEnd;
    strBegin = "2004-7-8";
    strEnd = "2004-8-7";

    COleVariant VTime1, VTime2;
    VTime1 = strBegin;
    VTime2 = strEnd;
    VTime1.ChangeType(VT_DATE);
    VTime2.ChangeType(VT_DATE);

    COleDateTime DataTime1 = VTime1;
    COleDateTime DataTime2 = VTime2; //得到数据库记录,并进行转换.....

    if( (day.m_dt > DataTime1.m_dt) && (day.m_dt < DataTime2.m_dt) )
    {
    .....
    }
    else
    {
    ......

             }
      

  3.   

    SQL语句中直接用datediff
    参考
    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=189405
      

  4.   

    问题没有描述清楚
    select * from Table where RDate between A and B
    .........
      

  5.   

    不用那么麻烦!
    if(varValue>dayBegin && varValue<dayEnd)就行,
    我在Access中就是这么用的,没有问题,最多变换一下时间的格式即可。