停车类型 s1 驶入时间 srsj 开出时间 kcsj 计费charge
7点--21点 2元/每15分钟 不够15分钟的按15分钟计算
21点--次日7点 1.5元/每2小时 不够2小时的按2小时计算
有些停好几天的,这个charge=多少啊,怎么计算啊
7点--21点 2元/每15分钟 不够15分钟的按15分钟计算
21点--次日7点 1.5元/每2小时 不够2小时的按2小时计算
有些停好几天的,这个charge=多少啊,怎么计算啊
解决方案 »
- 一个列变行的问题 ,请问如何实现
- oracle是否在哪个系统表中维护着本数据库都支持什么样的数据类型呢?
- Oracle数据库名能改吗?说具体些
- SQL 语句,在线等。。。不知道能不能实现的SQL语句。。。。。
- OracleDBConsoleorcl无法启动
- SQL触发器问题(数据库 使用sqlplus这个软件)
- 怎么查看oracle下有那些数据库?
- 菜鸟的关于SELECT语句的问题!
- 急!!!!请问在ora8中,表名、字段名及字段类型是存在哪些系统表内的?????
- 从sql server导出到 oracle的表为什么不能查询。
- 用JDBC创建表空间无效??
- oracle 判断表空间是否存在 如果存在就删除,不存在就创建
--写个函数,传入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;
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;