本人想写 SQL 语句查询当天的日期?(50分)

  • 主题发起人 主题发起人 bodhisattva
  • 开始时间 开始时间
B

bodhisattva

Unregistered / Unconfirmed
GUEST, unregistred user!
[?]数据库为 Access , Delhi6, Win2K
QuerySet.Close;
QuerySet.Sql.Clear ;
QuerySet.SQL.Add ('Select TradeMSG.TradeName,TradeMSG.Color From TradeMSG');
QuerySet.SQL.Add (' Where DateValue(TradeMSG.SaleDate)=:NowDate ');
QuerySet.Prepare ;
QuerySet.ParamByName('NowDate').AsDate:= now;
try
QuerySet.Open;
except
begin
MessageBeep(0);
Application.MessageBox ('错误的 SQL 语句 !','确认',MB_ok+MB_ICONSTOP);
end;
end;
end;
[?]
 
QuerySet.Prepare ;
QuerySet.ParamByName('NowDate').AsDate:= now;
应改为
QuerySet.ParamByName('NowDate').AsDatetime:= now;
QuerySet.Prepare ;
 
now -> Date
 
QuerySet.SQL.Add (' Where DateValue(TradeMSG.SaleDate)=:NowDate ');
QuerySet.Prepare ;
QuerySet.ParamByName('NowDate').AsDate:= now;
改成
QuerySet.SQL.Add (' Where DateValue(TradeMSG.SaleDate)=#'+DateTostr(now)+'#';
QuerySet.Prepare ;

 
非常感谢大家的支持![:)]
但第一、二种方法均不行[:(]
 
出什么错误或现象??
 
试试下面的:
QuerySet.SQL.Add (' Where DateValue(TradeMSG.SaleDate)=#'+formatdatetime('yyyy-mm-dd',now)+'#';
//其中的'yyyy-mm-dd'可根据ACCESS的时间表示方法改动。
 
QuerySet.SQL.Add (' Where DateValue(TradeMSG.SaleDate)=:NowDate ');

不明白你的这个函数使用有何意义。难道TradeMSG.SaleDate这个字段不是Datetime?
如果是,就不用转换。。。。。。
如果不是,那你的参数:NowDate就必须转成相应的类型。
 
Weic, 首先感谢你的积极参与!
没错,TradeMSG.SaleDate是时间字段,但不转换,就得不到正确查询结果![:(]
 
首先我想知道 DateValue 返回的值是什么类型?
 
日期类型
 
谁能告诉我,在 ACCESS 中利用日期字段查询当天的记录?
 
这样写绝对可以,我已经通过:
Var
Sql_Str:String;//用以动态生成SQL语句
Begin
Sql_Str:='Select TradeMSG.TradeName,TradeMSG.Color From TradeMSG Where '
+'TradeMSG.SaleDate>=DateValue('+''''+FormatDateTime('yyyy-mm-dd',Now)+' 00:00:00'+''''+')'
//生成如这样格式:TradeMSG.SaleDate>=DateValue('2002-02-15 00:00:00')
+' and TradeMSG.SaleDate<DateValue('+''''+FormatDateTime('yyyy-mm-dd',Now+1)+' 00:00:00'+''''+')' ;
//多出一天:TradeMSG.SaleDate<DateValue('2002-02-16 00:00:00')
AdOQuery1.Active:=False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(Sql_Str);
ADOQuery1.Active:=True;
End;
 
where ........='#'+''''+datetostr(date)+''''+'#'
 
KAO!,教材上抄一段:
where mydate>="12/25/2000" and mydate<"12/26/2000"
OR
where mydate like "dec 25 2000%"
------------------------------
where mydate="12/25/2000"是查询"12/25/2000 12:00:00:000AM"这一时刻的
 
受你的启发,我的问题解决了!
方法:
QuerySet.Close;
QuerySet.Sql.Clear ;
QuerySet.SQL.Add ('Select TradeMSG.TradeName,TradeMSG.Color,TradeMSG.Size,TradeMSG.Style,SaleRecord.Price,SaleRecord.Amount,SaleRecord.SaleDate From TradeMSG,SaleRecord');
SQL_Str:='Where DateValue(SaleRecord.SaleDate)= #'+ DatetoStr(DATE) + '#' + 'and TradeMSG.BarCode = SaleRecord.BarCode' ;
QuerySet.SQL.Add (SQL_Str);
QuerySet.Prepare ;
 
后退
顶部