sql语句如何写?(50分)

  • 主题发起人 主题发起人 翟英佳
  • 开始时间 开始时间

翟英佳

Unregistered / Unconfirmed
GUEST, unregistred user!
Access数据库有一字段为日期行,如何用sql语句分别查找到本日、本月、本年的记录?
请各位指点。
 
本日容易吧!
query1.SQL.Add(‘select * from tablename where datefield=:a’)
Query1.parambyname('a').asdatetime:=date();
本月:
query1.SQL.add(‘select * from tablename where datefield>本月1日 and datefield<本月最后一天’);
本年和本月的一样用一个时间区间来判断。
要判断一下是平年的2月是28天,润年是29。
我以前是这样做的,方法比较笨,也很麻烦不知道有没有更好的方法

 
To Dephic:
的确实有点笨,呵呵……
试试这样:
//本年
with query1 do
begin
Close;
SQL.Clear;
SQL.Add(‘select * from tablename where Year(datefield)=Year(:a)’);
parambyname('a').asdatetime:=date();
Open;
end;
//本月
... where Year(datefield)=Year(:a) and Month(datefield)=Month(:a)

//只适用于Access,Sql Server 可用Datepart,我的系统刚重装,还没Assess,没法测试
//不过俺以前用过的,应该是这样。^-^

 
使用EXTRACT函数。
//本年
with query1 do
begin
Close;
SQL.Clear;
SQL.Add(‘select * from tablename where EXTRACT(Year FROM datefield) =:a’);
parambyname('a').asinteger:=本年;
Open;
end;

//本月
with query1 do
begin
Close;
SQL.Clear;
SQL.Add(‘select * from tablename where EXTRACT(Year FROM datefield) =:a and EXTRACT(Month FROM datefield) =:b’);
parambyname('a').asinteger:=本年;
parambyname('b').asinteger:=本月;

Open;
end;

本日,不用了吧。
 
谢谢各位,立刻就试!
 
多人接受答案了。
 
后退
顶部