※ 引述《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)