请大家告诉我这个sql怎么写呀?(10分)

  • 主题发起人 主题发起人 xxsteven
  • 开始时间 开始时间
X

xxsteven

Unregistered / Unconfirmed
GUEST, unregistred user!
我用query,控制dbgird,想让dbgird只显示当月的数据???
select * from rwd where........
 
在窗体的oncreate中编辑Query的sql;
add('select * from rwda')
add('where Month ='+FormatDateTime('mm',Date))
 
select * from rwd where month(date)=month(GETDATE ( ))
 
select * from rwd where month(你的时间字段)='你要的月份'
 
谢谢大家,但是我要的月份是不需要填的,系统自动识别的呀,比如今天是2月4日,就显示2月的
如果今天是3月1日,就显示3月的呀
 
还有一点我的时间字段的输入格式是yy--mm--dd的怎么用sql转换过来呢?》
 
select * from rwd where month(表中的时间字段)=month(GETDATE ( )) ;
 
:kelvin-lee
它包错说是没有getdate()这个函数
 

Query1.Sql.Add('SELECT * from rwd');
Query1.Sql.Add('where 车间=''q''' );
Query1.Sql.Add('AND MONTH(日期)=:月份');
Query1.Parammeters.ParamByName('月份'):='+FormatDateTime('mm',Date);
query1.Active:=true;
怎么这样错了呢?倒数第2句话
 
你用的是什么数据库?不同的数据库有不同的用法。
 
我用的是access
 
以下代码在D5+Access2000+Windows2000下运行通过
var
iM, iY, iD, iM1, iY1 : Word;
sD1, sD2 : string;
begin
DecodeDate(Date, iY, iM, iD);
sD1 := IntToStr(iY) + '-' + IntToStr(iM) + '-' + '01'; //本月第一天
if iM = 12 then
begin
iM1 := 1;
iY1 := iY + 1;
end
else
Begin
iM1 := iM + 1;
iY1 := iY;
End;
sD2 := IntToStr(iY1) + '-' + IntToStr(iM1) + '-' + '01'; //下个月第一天
with Query do
Begin
Close;
Sql.Clear;
Sql.Add('SELECT * FROM RWD WHERE RQ>=:v_rq1 AND RQ<:v_rq2');//大于等于本月第一天,小于下月第一天,这样做的好处就是可以不管本月总共是几天
Parameters.ParamByName('v_rq1').Value := StrToDate(sD1);
Parameters.ParamByName('v_rq2').Value :=StrToDate(sD2);
Open;
End;
 
select * from table
where datepart(mm,'日期字段')=datepart(mm,getdate());
 
Parameters
它说这个东西不明
 
你是用什么联接Access数据库的?不是ADO吗?
要不你这样试试:
Query.//点后停一会儿等Delphi弹出参数框后敲入Para...看是不是Parameter,用
ADO联接和用BDE联接参数写法有点区别。
 
select * from rwda where Month(日期字段)=FormatDateTime('mm',Date)
这样试试。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部