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

NEXT_DAY () Oracle में फ़ंक्शन

Oracle डाटाबेस में, NEXT_DAY() फ़ंक्शन निर्दिष्ट कार्यदिवस के पहले उदाहरण की तारीख देता है जो निर्दिष्ट तिथि से बाद में होता है।

सिंटैक्स

वाक्य रचना इस प्रकार है:

NEXT_DAY(date, char)

जहां date तारीख है और char निर्दिष्ट कार्यदिवस है।

char तर्क वर्तमान सत्र की तिथि भाषा में सप्ताह का एक दिन होना चाहिए, या तो पूरा नाम या संक्षिप्त नाम। आवश्यक अक्षरों की न्यूनतम संख्या संक्षिप्त संस्करण में अक्षरों की संख्या है। मान्य संक्षिप्त नाम के तुरंत बाद किसी भी वर्ण को अनदेखा कर दिया जाता है।

उदाहरण

यहां एक उदाहरण दिया गया है:

SELECT NEXT_DAY('01-OCT-2035', 'FRIDAY') AS "Next Friday"
FROM DUAL;

परिणाम:

   Next Friday 
______________ 
05-OCT-35     

सप्ताह के दिन संक्षेप

उपरोक्त उदाहरण पूरे कार्यदिवस के नाम का उपयोग करता है। निम्नलिखित उदाहरण में, मैं इसके बजाय संक्षिप्त नाम का उपयोग करता हूं:

SELECT NEXT_DAY('01-OCT-2035', 'FRI') AS "Next Friday"
FROM DUAL;

परिणाम:

   Next Friday 
______________ 
05-OCT-35     

किसी भी तरह से, परिणाम वही है।

वास्तव में, जब तक तर्क के पहले भाग में एक वैध कार्यदिवस का संक्षिप्त नाम होता है, तब तक फ़ंक्शन उस संक्षिप्त नाम से मेल खाने वाले अगले कार्यदिवस की तारीख लौटाएगा। वैध संक्षिप्त नाम के तुरंत बाद किसी भी वर्ण को अनदेखा कर दिया जाता है। इसलिए, भले ही पूरा तर्क वास्तव में एक मान्य कार्यदिवस का नाम नहीं है, जब तक कि पहला भाग एक वैध कार्यदिवस का संक्षिप्त नाम है, यह उस कार्यदिवस के लिए एक परिणाम लौटाएगा।

उदाहरण:

SELECT 
    NEXT_DAY('01-OCT-2035','Monkey') AS "Next Monkey",
    NEXT_DAY('01-OCT-2035','Thumbnail') AS "Next Thumbnail",
    NEXT_DAY('01-OCT-2035','Friar Tuck') AS "Next Friar Tuck"
FROM DUAL;

परिणाम:

   Next Monkey    Next Thumbnail    Next Friar Tuck 
______________ _________________ __________________ 
08-OCT-35      04-OCT-35         05-OCT-35         

भाषा सेटिंग

जैसा कि उल्लेख किया गया है, कार्यदिवस या उसका संक्षिप्त नाम वर्तमान सत्र की तिथि भाषा में सप्ताह का एक दिन होना चाहिए।

जब मैं अपने सत्र की भाषा बदलता हूं तो यहां क्या होता है, फिर उसी उदाहरण को फिर से चलाने का प्रयास करें:

ALTER SESSION SET NLS_LANGUAGE = 'Spanish';

SELECT NEXT_DAY('01-OCT-2035', 'FRIDAY') AS "Next Friday"
FROM DUAL;

परिणाम:

Session alterado.


Error que empieza en la línea: 1 del comando :
SELECT NEXT_DAY('01-OCT-2035','FRIDAY') AS "Next Friday"
FROM DUAL
Informe de error -
ORA-01846: día de la semana no válido

इस मामले में, मेरी भाषा स्पेनिश है, और इसलिए हमें स्पेनिश में कार्यदिवस प्रदान करने की आवश्यकता होगी:

ALTER SESSION SET NLS_LANGUAGE = 'Spanish';

SELECT NEXT_DAY('01-OCT-2035', 'viernes') AS "Next Friday"
FROM DUAL;

परिणाम:

   Next Friday 
______________ 
05-OCT-35     

अशक्त तर्क

यदि दोनों में से कोई भी तर्क null है , परिणाम null . है :

ALTER SESSION SET NLS_LANGUAGE = 'AMERICAN';
SET NULL 'null';

SELECT
    NEXT_DAY(null, 'FRIDAY') AS "1",
    NEXT_DAY('01-OCT-2035', null) AS "2"
FROM DUAL;

परिणाम:

      1       2 
_______ _______ 
null    null   

डिफ़ॉल्ट रूप से, SQLcl और SQL*Plus जब भी null . खाली स्थान लौटाते हैं SQL SELECT . के परिणामस्वरूप होता है बयान।

हालांकि, आप SET NULL . का उपयोग कर सकते हैं वापस करने के लिए एक अलग स्ट्रिंग निर्दिष्ट करने के लिए। यहाँ मैंने निर्दिष्ट किया है कि स्ट्रिंग null वापस किया जाना चाहिए।

अनुपलब्ध तर्क

कॉलिंग NEXT_DAY() तर्कों की गलत संख्या के साथ, या कोई तर्क पारित किए बिना, एक त्रुटि उत्पन्न होती है:

SELECT NEXT_DAY()
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT NEXT_DAY()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. R12.2 में लॉगिन प्रवाह और मूल समस्या निवारण

  2. Oracle DBA रीयल टाइम प्रश्न

  3. Oracle में पंक्तियों को गतिशील रूप से स्तंभों में पिवट करना

  4. Oracle current_timestamp से सेकंड रूपांतरण

  5. Oracle में पैकेज के अंदर एक प्रक्रिया कैसे निष्पादित करें?