有个朋友让我帮做做个个人记账程序。我想实现这个功能:
统计每天消费金额、每周消费金额、每月消费金额、每年消费金额。
具体点就是,今天买物品一:10元 买物品二:20元。如果自己不点
当日结算按钮,那么就在第二天,或者下次登录的时候自动结算前一天的
消费金额,插入数据库中,就是30元。
登陆的时候在根据日期结算每周的消费、每月的消费。比如今天是7月1日。
那么我今天登陆了,自动结算6月份的消费总额。我星期一登陆了,自动结算
上周的消费金额。
说白了,就是登陆了,就自动检测上一日、上一周、上一月的消费是否结算,
如果没有,系统自己结算。改如何实现?用SQL怎么实现,用程序如何实现。
我不要用户自己点击按钮结算,我就想用户只输入消费明细。程序自动算出结算
数据,并插入相应的表中!
如何实现,请大家指教!
就15分,全给你了!
其实就是根据时间段来计算一个总和的问题,只要时间段明确了,通过DB的sum函数就能计算出结果了。
比如: 你数据库中在记录每个物品金额的时候都记录一个当前时间,并未:mydate(date类型)
对于“上一天”只要条件:
[code="sql"]
where to_char(sysdate-1,'yyyymmdd') = to_char(mydate,'yyyymmdd')
[/code]
对于“上一周”只要条件:
[code="sql"]
where to_char(mydate,'yyyymmdd') >= to_char((sysdate-to_char(sysdate,'d')-7),'yyyymmdd')
and to_char(mydate,'yyyymmdd') <= to_char((sysdate-to_char(sysdate,'d')-1),'yyyymmdd')
/code
对于“上个月”只要条件:
[code="sql"]
where to_char(add_months(sysdate,-1),'yyyymm') = to_char(mydate,'yyyymm')
[/code]
忒简单的一个需求。
建表保存每笔消费金额,如:
表info,字段:product(物品),money(金额),date(日期)
每消费一笔,就这样记录进去。
利用sql语句的sum()和 between '日期1' and '日期2',然后剩下的就是程序的事了,计算这两个日期。
比如想计算前一个月的,今天7月1号登陆,程序中得到今天的日期,然后今天的日期月份减1,这样就得到2个日期了。其他的计算也这样。
上面的上一周的时间有问题,应该如下:
sysdate-to_char(sysdate,'d')-5 2009-6-22(星期一)
sysdate-to_char(sysdate,'d')+1 2009-6-28(星期日)
来学习的!