合成时间的问题 encode 拜求答案 ( 积分: 5 )

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

pipiws

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


var
start,stop:string;
sum2:single;
lp:tsystemtime;
begin
L1.Visible:=false;
Box1.Visible:=false;
shengcheng.Visible:=false;
L2.Visible:=true;
money.Visible:=true;
L3.Visible:=true;
time.Visible:=true;

getsystemtime(lp);
if Box1.Text='1月' then
begin
start:=datetostr(encodedate(lp.wYear,01,00));//
start:=datetostr(encodedate(lp.wYear,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:=strtofloat(fieldbyname('sum1').AsString);
end;
money.Text:=floattostr(sum2);
end;

end;

提示encode无效;
 
2001-01-00
有这种日期吗?
改成2001-01-01吧
 
这里的问题就是如何控制每月的最后一天的问题
换个角度思考 数据库中加减一天 加减一月都很容易
每个月的第一天不难得到
那每个月的最后一天不就是下个月的第一天减去一天吗
如下:
create function dbo.thismonth_firstday
(@date datetime)
returns datetime
as
begin
declare @year varchar(4),@month varchar(2),@yearmonthday varchar(10)
set @year = cast(year(@date) as varchar)
set @month = cast(month(@date) as varchar)
set @yearmonthday = @year '-'+@month+'-01'
return cast(@yearmonthday as datetime)
end


create function dbo.thismonth_lastday
(@date datetime)
returns datetime
as
begin
--这个月的最后一天
declare @year varchar(4),@month varchar(2),@yearmonthday varchar(10)
set @year = cast(year(@date) as varchar)
set @month = cast(month(@date) as varchar)
set @yearmonthday = @year '-'+@month+'-01'
return dateadd ( month , 1, cast(@yearmonthday + ' 23:59:59' as datetime))-1
end
把分全部给我
 
后退
顶部