ORACLE幾個關於工作日數的函式(原創)

2021-04-01 18:37:35 字數 1071 閱讀 5873

最近做到乙個關於銷售**的模組,而其中需要有月達成率等幾項需要用到工作日做分母的情況

這樣就要得到工作日的數量

怎樣得到兩個日期之間除了星期天,星期六的天數,oracle中可以使用下面的句子

select count(*)

from ( select rownum rnum

from all_objects

where rownum <= to_date('&1') - to_date('&2')+1 )

where to_char( to_date('&2')+rnum-1, 'dy' ) 

not in ( 'sat', 'sun' )

而我想得到乙個不定月的工作日,這樣首先要得到該月的最後一天和第一天

第一天用

select trunc(sysdate,'mm') from dual

最後一天用

select add_months(trunc(sysdate,'mm'),1)-1 from dual

這樣就不難得到該月的工作日了

該月工作日為

select count(*)

from (select rownum rnum

from all_objects

where rownum <=

add_months(trunc(sysdate, 'mm'), 1) - trunc(sysdate, 'mm'))

where to_char(trunc(sysdate, 'mm') + rnum - 1, 'd') not in ('1', '7')

該月已過工作日為

select count(*)

from (select rownum rnum

from all_objects

where rownum <= sysdate -trunc(sysdate,'mm') + 1)

where to_char(trunc(sysdate,'mm') + rnum - 1, 'd') not in ('1', '7')

剩餘的工作日一減就ok了

感謝"楊鎧銘"兄弟,開始的星期的確錯了,現在已經修改了

9計算當前回退N年的工作日數

import time 輸入指定計算時間 start day input 請輸入回溯的日期 格式為 年 月 日 end day input 請輸入計算結束的日期 格式為 年 月 日 將輸入的時間轉換為時間元組 start tuple time.strptime start day,y m d end...

計算兩個日期之間的工作日數

計算兩個日期之間的工作日數,星期6,星期天,不算工作日 dt1和dt2之間相隔多少工作日,其中dt3 dt4的時間為公休日,這裡公休日可以用以個陣列,或者從乙個xml表裡面讀取,以便扣除 要計算的起始時間 要計算的結束時間 公休起始時間 公休結束時間 intreturn private int di...

關於工作日記

工作日記主要有幾個作用 1 備忘錄,開發和設計時,有很多時候,線頭放得太開,最後逐一解決收攏時,怕忘了,習慣性記到日記裡面,嗯,還有很多時候,思考乙個問題的時候,連帶想起另外乙個問題的解法或靈感,但當時不方便順著這個思路往下想,就先記下來。2 寫總結的素材,以前做管理的時候,很多員工問題,出在不了解...