Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ओरेकल में शनिवार, रविवार और छुट्टियों को छोड़कर 48 कार्य घंटों की तारीख कैसे खोजें?

आप यह सब SQL में कर सकते हैं:

WITH dates ( dt, lvl ) AS (
  SELECT CAST( TRUNC( :your_date ) AS DATE ), 0 FROM DUAL
UNION ALL
  SELECT CAST( dt - INTERVAL '1' DAY AS DATE ),
         CASE
           WHEN ( dt - INTERVAL '1' DAY ) - TRUNC( dt - INTERVAL '1' DAY, 'IW' ) >= 5
           OR   hol_date IS NOT NULL
           THEN lvl
           ELSE lvl + 1
         END
  FROM   dates d
         LEFT OUTER JOIN
         holidays h
         ON ( d.dt - INTERVAL '1' DAY = h.hol_date )
  WHERE  lvl < 2
)
SELECT *
FROM   dates
PIVOT  ( MAX( dt ) FOR lvl IN ( 1 AS DATE24, 2 AS DATE48 ) );

(नोट:CAST का उपयोग करके) आवश्यक नहीं होना चाहिए, लेकिन बिना मुझे ORA-01790: expression must have same datatype as corresponding expression )

या, एक समारोह के रूप में:

CREATE OR REPLACE FUNCTION F_HOL_CHECK_S_NS (
  i_hol_date DATE,
  i_S_NS     NUMBER
) RETURN DATE
AS
  p_date DATE;
BEGIN
  WITH dates ( dt, lvl ) AS (
    SELECT CAST( TRUNC( i_hol_date ) AS DATE ), 0 FROM DUAL
  UNION ALL
    SELECT CAST( dt - INTERVAL '1' DAY AS DATE ),
           CASE
             WHEN ( dt - INTERVAL '1' DAY ) - TRUNC( dt - INTERVAL '1' DAY, 'IW' ) >= 5
             OR   hol_date IS NOT NULL
             THEN lvl
             ELSE lvl + 1
           END
    FROM   dates d
           LEFT OUTER JOIN
           holidays h
           ON ( d.dt - INTERVAL '1' DAY = h.hol_date )
    WHERE  lvl < i_s_ns
  )
  SELECT dt
  INTO   p_date
  FROM   dates
  WHERE  lvl = i_s_ns;

  RETURN p_date;
END;
/


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle को JDBC कॉल 3 प्रश्न चिह्न लौटाता है

  2. प्रक्रिया के अंदर तालिका बनाएं

  3. HQL क्वेरी में NULL की जाँच कैसे करें या मान्य नहीं है?

  4. जब मैं sqlldr . का उपयोग करता हूं तो मुझे ORA-01775:समानार्थक त्रुटि की लूपिंग श्रृंखला मिलती है

  5. Windows 10 Professional पर Oracle 12c मानक संस्करण स्थापित करना