我用的是acess数据库 生日字段 是 t_data 类型 是日期/时间
姓名字段 t_name  类型  字符现在问题是如何写sql 语句使得t_data字段能和系统时间比较(不比较年份)
如有输入1981-03-22 则当系统时间为 3月22 时 就自动提醒!! 

解决方案 »

  1.   

    这个我自己写过了。一共两个函数,楼主看看吧
    原创阿
    Function TFrmMain.DateTest(Birthday:TDateTime):INTEGER;
    var
       dayinc:integer;
      Present: TDateTime;
      Yearnow, Monthnow, Daynow,DayBir: Word;
    begin
         Present:=Now;
         DecodeDate(Present, Yearnow, Monthnow, Daynow);
         DecodeDate(Birthday,yearnow,monthnow,daybir);
         IF monthstr(Birthday)<>MonthStr(date) then
            result:=100
         Else
            begin
    {           showmessage(inttostr(daybir));
               showmessage(datetimetostr(Birthday));}
               dayinc:=daybir-daynow;
               if (dayinc<-1) or (dayinc>1) then
                   result:=100
               Else
                   result:=dayinc;
            end;       end;Procedure TFrmMain.BirthdayTest();
    var
       Bir:tdatetime;
       name:String;
       daynum:integer;
    Begin
        With QrySel do
          begin
            close;
            sql.clear;
            sql.Add('select birthday,name from tongxu where birthday is not null order by birthday');
            open;
          end;
        if QrySel.RecordCount<1 then exit;
        QrySel.First;
        While not QrySel.Eof do
            Begin
               Bir:=StrtoDateTime(QrySel.Fieldbyname('birthday').asstring);
               name:=QrySel.FieldByName('name').asstring;
               QrySel.Next;
               daynum:=DateTest(Bir);
               if daynum=100 then
                    continue
               Else
                  Begin
                     case daynum of
                        1:showMessage('嗯,明天可是'+name+'的生日了');
                        0:showMessage('嗯,今天可是'+name+'生日,看着办吧');
                     Else
                     End;   
                  End;        End;End;