1. 程式人生 > 其它 >oracle 計算兩個時間的間隔_Oracle 兩個時間內有幾個週末

oracle 計算兩個時間的間隔_Oracle 兩個時間內有幾個週末

技術標籤:oracle 計算兩個時間的間隔

1808df5e4396b0372fd8f0991bbee0e8.png

--------------求兩個時間段內有幾天週末包含這兩個時間段

SELECTcount(*)FROM(SELECTrownumrnumFROMall_objectsWHEREROWNUM<=TO_DATE('2019-07-13','yyyy-MM-dd')-TO_DATE('2019-06-30','yyyy-MM-dd')+1)WHERE to_CHAR(TO_DATE('2019-06-30','yyyy-MM-dd') + rnum - 1,'D') IN ('1','7');
--------------------------------查詢出兩個時間見內有幾個工作日(好用,sql複雜)select (trunc(to_date('2019-07-07','yyyy-mm-dd') - to_date('2019-06-30','yyyy-mm-dd')) -          ((case         WHEN (8 - to_number(to_char(to_date('2019-06-30','yyyy-mm-dd'),'D'))) > trunc(to_date('2019-07-07','yyyy-mm-dd') - to_date('2019-06-30','yyyy-mm-dd')) + 1 THEN 0         ELSE          trunc((trunc(to_date('2019-07-07','yyyy-mm-dd') - to_date('2019-06-30','yyyy-mm-dd')) -                (8 - to_number(to_char(to_date('2019-06-30','yyyy-mm-dd'),'D'))))/7) + 1 END) +          (case         WHEN mod(8 - to_char(to_date('2019-06-30','yyyy-mm-dd'), 'D'), 7) > trunc(to_date('2019-07-07','yyyy-mm-dd') - to_date('2019-06-30','yyyy-mm-dd')) - 1 THEN 0         ELSE          trunc((trunc(to_date('2019-07-07','yyyy-mm-dd') - to_date('2019-06-30','yyyy-mm-dd')) - (mod(8 - to_char(to_date('2019-06-30','yyyy-mm-dd'),'D'),7) + 1))/7) + 1  END)))         as workingdays  from dual

----------總結

泛型最好不要有重複sql :TO_DATE('2019-01-01 14:30','yyyy-mm-dd hh24:mi')java:SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-ddHH:mm");