怎么计算停车收费

lgs873532027 2012-03-07 09:25:43
停车类型 s1 驶入时间 srsj 开出时间 kcsj 计费charge

7点--21点 2元/每15分钟 不够15分钟的按15分钟计算
21点--次日7点 1.5元/每2小时 不够2小时的按2小时计算
有些停好几天的,这个charge=多少啊,怎么计算啊
...全文
437 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hi幸福来敲门 2012-03-09
  • 打赏
  • 举报
回复
自己寫的 可能會有錯誤 參考著看吧


create or replace procedure tb_proce_TingCheFei
(
date_1 date,
date_5 date
)
as
hour_1 number;
hour_2 number;
date_3 date;
date_4 date;
date_2 date;
money number;
begin
money:=0;
date_2:=date_5;
if date_2-date_1>=1 then
money:=round(date_2-date_1-0.499)*119.5;
date_2:=date_2-round(date_2-date_1-0.499);
end if;
hour_1:=to_number(to_char(date_1,'HH24'));
hour_2:=to_number(to_char(date_2,'HH24'));
date_3:=TO_DATE(TO_CHAR(TRUNC(date_1,'DD'),'YYYY-MM-DD')||'21:00:00','YYYY-MM-DD HH24:MI:SS');
date_4:=TO_DATE(TO_CHAR(TRUNC(date_2,'DD'),'YYYY-MM-DD')||'07:00:00','YYYY-MM-DD HH24:MI:SS');

if hour_1>=7 and hour_2<=20 and hour_1<=20 then
money:=Round((date_2-date_1)*24*60/15+0.499)*2;
elsif hour_1>20 and hour_2<=7 then
money:=Round((date_2-date_1)*24/2+0.499)*1.5;
elsif hour_1<=20 and hour_1>=7 then
money:=money+Round((date_3-date_1)*24*60/15+0.499)*2;
money:=money+Round((date_2-date_3)*24/2+0.499)*1.5;
elsif hour_1<7 or hour_1>20 then
money:=money+Round((date_4-date_1)*24/2+0.499)*1.5;
money:=money+Round((date_2-date_4)*24*60/15+0.499)*2;
end if;
dbms_output.put_line(money);
end;

老黎 2012-03-08
  • 打赏
  • 举报
回复

--写个函数,传入SRSJ和KCSJ,返回应结算金额
--以下代码可参考
SELECT SRSJ,KCSJ,
TO_NUMBER(TO_CHAR(SRSJ,'HH24')) HOUR,
CASE WHEN TO_NUMBER(TO_CHAR(SRSJ,'HH24')) BETWEEN 7 AND 20 THEN 'DAY' ELSE 'NIGTH' END DATE_TYPE,
(KCSJ - SRSJ)*24*60*60 SECOND_DIFF,
CASE WHEN TO_NUMBER(TO_CHAR(SRSJ,'HH24')) BETWEEN 7 AND 20
THEN TO_DATE(TO_CHAR(TRUNC(SRSJ,'DD'),'YYYY-MM-DD')||'21:00:00','YYYY-MM-DD HH24:MI:SS')
WHEN TO_NUMBER(TO_CHAR(SRSJ,'HH24')) <= 6
THEN TO_DATE(TO_CHAR(TRUNC(SRSJ,'DD'),'YYYY-MM-DD')||'07:00:00','YYYY-MM-DD HH24:MI:SS')
ELSE TO_DATE(TO_CHAR(TRUNC(SRSJ,'DD')+1,'YYYY-MM-DD')||'07:00:00','YYYY-MM-DD HH24:MI:SS')
END NEXT_DATE_TYPE
FROM A_TABLE;
kingkingzhu 2012-03-07
  • 打赏
  • 举报
回复
锅啊 不复杂啊 把逻辑理清楚 用函数写 很简单啊
lgs873532027 2012-03-07
  • 打赏
  • 举报
回复
是啊,复杂啊[Quote=引用 4 楼 kingkingzhu 的回复:]
肯定要对时间进行判断啊
你要判断时间是落在哪个段里啊 是7-21 还是 21-次日7
2个段里算钱的方法不同了
[/Quote]
kingkingzhu 2012-03-07
  • 打赏
  • 举报
回复
肯定要对时间进行判断啊
你要判断时间是落在哪个段里啊 是7-21 还是 21-次日7
2个段里算钱的方法不同了
lgs873532027 2012-03-07
  • 打赏
  • 举报
回复
charge:=就是把2个时间段停的时间算出来*价格 加起来,不会时间运算啊
kingkingzhu 2012-03-07
  • 打赏
  • 举报
回复
这个 应该还是比较好做的 写个函数 驶入时间和开出时间做入参就是
然后循环减时间 判断 算钱就可以的

如楼上说 逻辑上还有需要讨论的地方
索隆 2012-03-07
  • 打赏
  • 举报
回复
这个难就难在
7点--21点 2元/每15分钟
21点--次日7点 1.5元/每2小时
如果有人在20:55停车,在21:10离开,这样正好15分钟,
按照你这个规定,你怎么算呢?不会是2+1.5=3.5元吧?
这太不合理了
lgs873532027 2012-03-07
  • 打赏
  • 举报
回复
就是这样子[Quote=引用 1 楼 lushuaiyin 的回复:]
这个难就难在
7点--21点 2元/每15分钟
21点--次日7点 1.5元/每2小时
如果有人在20:55停车,在21:10离开,这样正好15分钟,
按照你这个规定,你怎么算呢?不会是2+1.5=3.5元吧?
这太不合理了
[/Quote]
lgs873532027 2012-03-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 andyguan01_2 的回复:]
引用 1 楼 lushuaiyin 的回复:
这个难就难在
7点--21点 2元/每15分钟
21点--次日7点 1.5元/每2小时
如果有人在20:55停车,在21:10离开,这样正好15分钟,
按照你这个规定,你怎么算呢?不会是2+1.5=3.5元吧?
这太不合理了

弄清楚了这种跨时段的计费方式,其他就简单了。关键在理清需求。
[/Quote]不清楚怎么算这种跨时段,第一次接触,感觉超级难啊,望高手指点
andyguan01_2 2012-03-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lushuaiyin 的回复:]
这个难就难在
7点--21点 2元/每15分钟
21点--次日7点 1.5元/每2小时
如果有人在20:55停车,在21:10离开,这样正好15分钟,
按照你这个规定,你怎么算呢?不会是2+1.5=3.5元吧?
这太不合理了
[/Quote]
弄清楚了这种跨时段的计费方式,其他就简单了。关键在理清需求。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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