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

ओरेकल में संघीय अवकाश सहित चालू माह के अंतिम कारोबारी दिन के लिए ओरेकल एसक्यूएल

उन संघीय छुट्टियों को छुट्टियों की तालिका में DATE . के रूप में संग्रहीत करें टाइप करें और फिर कुछ इस तरह का प्रयास करें:सबसे पुराना खोजें ( MAX ) महीने के अंतिम सात दिनों में दिन जो न तो शनिवार या रविवार है और न ही छुट्टियों की तालिका में उल्लिखित छुट्टी है।

यहां धारणाएं हैं कि 1) महीने के अंत में सभी सात दिन सभी छुट्टियां या सप्ताहांत नहीं हो सकते हैं और 2) शनिवार और रविवार बंद हैं। आप level को समायोजित कर सकते हैं या जहां खंड तदनुसार, इस पर निर्भर करता है कि उपरोक्त धारणा हमेशा सत्य होनी चाहिए या नहीं।

SELECT MAX(dt) AS last_working_day 
FROM
(
SELECT last_day(SYSDATE) - level + 1 as dt
FROM dual CONNECT BY
     level <= 7  -- the last seven days of the month
     )  WHERE TO_CHAR(dt,'DY', 'NLS_DATE_LANGUAGE = AMERICAN') NOT IN ('SAT','SUN')
     AND dt NOT IN ( SELECT holiday from federal_holidays );

एक बेहतर तरीका यह होगा कि वर्ष की सभी तिथियों के साथ कैलेंडर तालिका और isbusinessday नामक पूर्वनिर्धारित कॉलम हो। . तब क्वेरी बहुत आसान हो जाएगी।

SELECT MAX(dt)
  FROM calendar
  WHERE isbusinessday = 'Y' 
AND TO_CHAR(dt,'YYYYMM') = TO_CHAR(SYSDATE,'YYYYMM');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओरेकल 11 जी में असीमित अक्षर कैसे स्टोर करते हैं?

  2. डेटाबेस में डुप्लिकेट पंक्तियाँ खोजें

  3. पीएल/एसक्यूएल में डायनेमिक सेलेक्ट इनटू क्लॉज के साथ बाइंड वेरिएबल्स का उपयोग करना

  4. एक नियमित अभिव्यक्ति पैटर्न के लिए एक स्ट्रिंग खोजें और प्रत्येक घटना को oracle SQL में स्वयं की व्युत्पत्ति के रूप में बदलें

  5. sql क्वेरी में केस एक्सप्रेशन ठीक से काम नहीं कर रहा है