某商店要统计哪些顾客在0:10-08:00之间在该商店购买了商品,只知道顾客进商店与结帐出商店地时间。
如:
顾客    进商店的时间      记帐时间    是否符合
----------------------------------------------
顾客1   00:15             02:00        符合
顾客2   00:09             01:00        符合
顾客3   08:01             09:00       不符合
顾客4   09:00             10:00       不符合
顾客n   HH:MM             HH:MM        ???

解决方案 »

  1.   

    所有时间采用24小时制~
    转换为分钟计算~
    Time := HH * 60 + MM;
    然后对比~
    0:10就是10
    8:00就是480
    Time在10和480之间的就满足要求~
      

  2.   

    to AKFish :
    Time在10和480之间的就满足要求~
    --那么如果某个顾客 00:09进店,08:01结帐,是否表示该顾客不满足要求??
      

  3.   

    楼主用什么存储数据的?
    貌似没有必要逐条筛选的~
    先排序~
    如果HH和MM是分开存储的~
    可以先检索到HH=8的~
    再看这一条记录的MM是不是刚好等于0~
    如果不是~
    这一条的上面一条就是满足要求的~
      

  4.   

    to AKFish:
    呵呵,我转换为秒运算的。
      

  5.   

    用两个TTime的数组分别保存顾客的进店时间和结帐时间,
    再与规定的时间比较就行了
      

  6.   

    一个个元素地比较,大概这样:
    const n=3;
    var m1,m2:array[1..n]of TTime;
        t1,t2:TTime;
        i:integer;
    begin
      t1:=StrToTime('0:10');t2:=StrToTime('08:00');
      m1[1]:=StrToTime('00:15');m2[1]:=StrToTime('02:00');
      m1[2]:=StrToTime('00:09');m2[2]:=StrToTime('01:00');
      m1[3]:=StrToTime('08:01');m2[3]:=StrToTime('09:00');
      for i:=1 to n do
       if (m1[i]>t1)and(m2[i]<t2) then ShowMessage('符合')
       else ShowMessage('不符合')
    end;
      

  7.   

    select 顾客,进商店的时间,记帐时间 from sale where (convert(datetime, 进商店的时间, 114) Between Convert(Datetime, '00:10', 114) and Convert(Datetime, '08:00', 114)) or (convert(datetime, 记帐时间, 114) Between Convert(Datetime, '00:10',114) and Convert(Datetime, '08:00', 114))
      

  8.   

    select * from 表1 where cast( '2005-10-1 00:10' as datetime) > 
    cast( '2005-10-1 ' + '结帐时间')
     and cast( '2005-10-1 ' + '结帐时间')<=
     cast( '2005-10-1 08:10 ' as datetime)