这是我所有的分了 哥哥帮帮忙吧这是最后一个问题 我一定给分的 ,不会难道你们的来吧,我解决了这问题我的设计就结束了; ( 积分: 50 )

  • 主题发起人 主题发起人 pipiws
  • 开始时间 开始时间
P

pipiws

Unregistered / Unconfirmed
GUEST, unregistred user!
//我想在提取出当前的年,合成像2001-01-00和2001-01-31再用到查询中当条件;我是想的到一个月的第一天,和最后一天。还有就是年是系统的年,能运行了可是没结果;

var
start,stop,mon,day1,day2:Tdatetime;
sum2:string;
yyyy,hh,dd,dd1:word;
begin
L1.Visible:=false;
Box1.Visible:=false;
shengcheng.Visible:=false;
L2.Visible:=true;
money.Visible:=true;
L3.Visible:=true;
time.Visible:=true;
DecodeDate(now,yyyy,hh,dd);


if Box1.Text='1月' then
begin

start:=encodedate(yyyy,01,01);

stop:=encodedate(yyyy,01,31);

with ADOquery1 do
begin
close;
sql.Clear;
SQL.Add('select sum(停车计费) as sum1 from 计费表 where 出库时间 between :s1 and :s2');
Parameters.ParamByName('s1').Value:=start;
Parameters.ParamByName('s2').Value:=stop;

open;
sum2:=fieldbyname('sum1').AsString;
end;
money.Text:=sum2;
end;

end;
 
getsystemtime(lp);?你想取时间?
这不是绕老大一圈,而放弃Delphi的优势吗?
取时间方法很多,直接用:
str:=DatetoStr(Now); //最简单的是直接用DateToStr()转换,结果是'2007-1-13'
要格式化返回可以这样写:
str:=FormatDateTime('yyyy-mm-dd',Now); //结果是'2007-01-13'
 
不是呀,我是想的到一个月的第一天,和最后一天。
 
当然FormatDateTime()超级强大,还可以:
FormatDateTime('dddddd dddd',Now) //2007年1月13日 星期六
FormatDateTime('现在是 dddd ampm tt',Now) //现在是 星期六 下午 22:49:00
...
其他用法自己看帮助。
 
直接用TDateTime对象不行吗?
赋值给TDateTime,然后传入
var
n1,n2: TDateTime;

n1:=StrtoDate('2007-1-1');
n2:=StrtoDate('2007-1-31');
//然后用n1,n2代替Now使用
 
再有,查询DateTime类型的字段时,用ANSI的字符方式保险一些,而不是直接传入TDateTime对象,比如这样写SQL:
SQL.Add('Select * from 定时提醒 where 提醒日期='+FormatDateTime('#yyyy-mm-dd#',Now)+' order by 1');
当然,这样比较慢-_-,除非你知道你用的数据库DateTime字段查询格式比如
MSSQLServer2000写法是 'Select * From XXXTable Where XXXTime >= ''2007-01-13 00:00:00'''
Oracle8可以是'Select * From XXXTable Where XXXTime >= To_Date(''2007.01.13 00:00:00'',''yyyy.mm.dd hh24:mi:ss'')'
找TDateTime的说明就好了,网上很多。
 
谢谢你了,虽然不是这的事,我还事要吧分给你,再次谢谢你的指点,
 
后退
顶部