查询指定月份,指定号之间的数据 ???

lantianhf10 2012-03-02 05:40:15
给定edit1.text 内容为年,edit2.text 内容为月,如给定年为2012,月为01
用ADOQuery 如何查询出当月即1月的记录内容,每月的记录为上月21号到本月20号间的数据,sql如何写参数如何设
Table1
name riqi
aa 2011-11-22
dd 2011-12-19
bb 2011-12-21
cc 2012-01-20

查询结果为
name riqi
bb 2011-12-21
cc 2012-12-20

给定年为2011,月为12月,查询结果

name riqi
aa 2011-11-22
dd 2011-12-19
...全文
65 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaikai_kk 2012-03-03
  • 打赏
  • 举报
回复
uses dateutils;

var
d1,d2:TDateTime;
Begin
if StrToInt(Edit2.Text)=1 then
d1:=Encodedate(StrToInt(Edit1.Text),12,21);
else
d1:=Encodedate(StrToInt(Edit1.Text),StrToInt(Edit2.Text)-1,21);
d2:=Encodedate(StrToInt(Edit1.Text),StrToInt(Edit2.Text),20);

ADOQuery1.SQL.Text:='select * from t where riqi between '''+DateToStr(d1)+''' and '''+DateToStr(d2)+'''';



自己判断输入值是否是合法,也可以用SQL的datepart函数
lzg827 2012-03-03
  • 打赏
  • 举报
回复
奇怪的表结构,建议加个字段,标记这条记录属于那个月。
这样还方便建索引。
原来的日期字段就算有索引,但字段加上计算条件后,索引全部无效。
大数据量的时候就扛不住了,因为任何查询都要扫描全表。。。。
ndscndscnd 2012-03-02
  • 打赏
  • 举报
回复
说的 好 有道理
我看见佛 2012-03-02
  • 打赏
  • 举报
回复
晕,,,,,,,,,,
lantianhf10 2012-03-02
  • 打赏
  • 举报
回复
自己解决了!
lantianhf10 2012-03-02
  • 打赏
  • 举报
回复
这论坛人越来越少了,Delphi 给力啊!

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧