作者arrack (Arrack)
看板PHP
标题Re: [请益] 计算扣掉六日的日期区间
时间Fri Dec 17 20:38:11 2010
※ 引述《JYHuang (夏天到了,冷不起来了说)》之铭言:
: 要从捞出来的资料比对栏位B的日期
: 是否在栏位A日期+n天的区间内(排除六日)
: 一开始打算直接在SQL Server做判断的..
: 不过这样SQL会落落长的落落长,而且加重SQL Server的Loading
: 接着打算想试试能不能用数学式来推(用+-%..之类的)
: 推不出来最後目前换成用data函数
: 1.先比对是否为同一周 (直接B-A)
: 2.计算日期A距周六几天
: 3.计算日期B距周日几天
: 再做(相隔周数-1)*5 + (周六-A天数) + B距周日天数
: : 至於效能方面不用太担心,这种计算不会很花时间
: : 以我的笔电,比对 10,000 次花 0.3 秒而已。
: 如果是数百笔,然後每一笔都逐日笔对的话
: 时间好像就不小了..
试试看建表法如何?
这样作除了六日外,也可以扣除国定假日
例如︰
日期 原因
-- --
2010/1/1 元旦
2010/1/2 六
2010/1/3 日
然後你要找4/5~5/8的话
只要取得
select count(日期) as 结果 from 表 where 日期>'2010/4/5' and 日期<'2010/5/8'
之後两个日期相减在减掉查询出来的结果即可
不过我更建议多一个栏位,纪录工作天
每次新增 修改 就顺便更新该值
--
以上的缺点是要定期维护该表
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.84.186.165
※ 编辑: arrack 来自: 219.84.186.165 (12/17 20:40)
※ 编辑: arrack 来自: 219.84.186.165 (12/17 20:41)