停车场收费统计的问题

龙龙16 2008-04-24 08:49:58
停车场计费问题:
有两张表:sfb(收费表)
有车型名称(cxmc)车型编号(bh)免费时间(mfsj)zgsf(最高收费)gysf(过夜收费)
sf(收费表)

sdb(时段表)
有bh(车型编号),sdmc(时段名称)je(金额)kssj(开始时间)jssj(结束时间)


cxmc mfsj zgsf gysf bh
小型车 15 15 2 1
中型车 10 20 3 2
bh sdmc je kssj jssj
1 第一时段 2 06:00:00 10:59:59
1 第二时段 3 11:00:00 16:59:59
1 第三时段 4 15:00 :00 23:59:59
2 第一时段 2 06:00:00 9:59:59
2 第二时段 3 10:00:00 16:59:59
2 第三时段 4 15:00 :00 23:59:59

一天时间段到 23:59:59结束,请问能不能写一个函数,根据进入时间和出去时间统计出金额出来。
或者其他方法啊。时间段是动态的。用户一天可以分配好几个时间段。时间段不能重复
如果超过一天的最高收费就根据最高收费标准来收取,减去免费的停车时间的金额,如果超过00:00的话就再加上过

夜收费的金额
...全文
142 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
龙龙16 2008-04-25
  • 打赏
  • 举报
回复
怎么只有一个人来回答啊,大家都来提提建议啊。
dawugui 2008-04-24
  • 打赏
  • 举报
回复
参考下面的按天,你把改为按每小时的即可,(建议提提供测试数据)

利用存储过程判断数据的两个时间之间的时间是否在表中存在
http://topic.csdn.net/u/20080421/22/b3f4edfe-937b-4b74-85a5-d218cf1a2174.html?seed=1687338846

/*
有一个表如下:
SCode StartDate EndDate
002044 2008-04-01 2008-04-30
002044 2008-06-01 2008-06-15
002044 2008-08-01 2008-08-15
如果给出一个两个时间如:s1=2008-06-16,s2=2008-06-30,或者是s1=2008-04-1,s2=2008-04-15,时间段也可能在2008-04-01之前,或2008-08-15之后,如何判断这个时间段是否已在数据库中?(数据库的最小时间段是半个月,以15号为分界判断之).
哪个高手能帮一下忙,或提供一个思路?先谢过了!
*/

create table tb(SCode varchar(10) , StartDate datetime , EndDate datetime)
insert into tb values('002044' ,'2008-04-01', '2008-04-30')
insert into tb values('002044' ,'2008-06-01', '2008-06-15')
insert into tb values('002044' ,'2008-08-01', '2008-08-15')
go

--加入一临时表
SELECT TOP 8000 id = identity(int,0,1) INTO tmp FROM syscolumns a, syscolumns b
go

--建立一存储过程
create procedure my_proc @dt1 datetime , @dt2 datetime , @return varchar(10) OUTPUT
as
begin
if exists
(
select m.* from
(select dt = dateadd(day , tmp.id , @dt1) from tmp where dateadd(day , tmp.id , @dt1) <= @dt2) m , tb n
where m.dt between n.startdate and n.enddate
)
set @return = '存在'
else
set @return = '不存在'
end
go

--调用存储过程并返回结果
declare @return as varchar(10)

exec my_proc '2008-06-16' , '2008-06-30' , @return OUTPUT
print @return
/*
不存在
*/

exec my_proc '2008-04-01' , '2008-04-05' , @return OUTPUT
print @return
/*
存在
*/

drop table tb,tmp
drop procedure my_proc

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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