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

Oracle में ROUND (तारीख) फंक्शन

Oracle में, ROUND(date) फ़ंक्शन किसी निर्दिष्ट दिनांक इकाई के लिए पूर्णांकित दिनांक लौटाता है।

डिफ़ॉल्ट रूप से, यह तिथि को निकटतम दिन तक पूर्णांकित करता है, लेकिन आप एक वैकल्पिक तर्क प्रदान कर सकते हैं जो उपयोग करने के लिए एक वैकल्पिक इकाई को निर्दिष्ट करता है।

Oracle में एक ROUND(number) . भी है सिंटैक्स, जिसका उपयोग संख्या पर किया जाता है। यह लेख केवल ROUND(date) . के बारे में है वाक्यविन्यास, जिसका उपयोग तिथि पर किया जाता है।

सिंटैक्स

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

ROUND(date [, fmt ])

जहां date एक DATE . का समाधान करना होगा मान, और fmt एक वैकल्पिक प्रारूप मॉडल है जो इकाई को date round के आसपास के लिए निर्दिष्ट करता है को। प्रारूप मॉडल TRUNC(date) के लिए समर्थित प्रारूप मॉडल में से कोई भी हो सकता है और ROUND(date) कार्य।

उदाहरण

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

SELECT 
    ROUND(TO_DATE('2030-12-31 12:30:45', 'YYYY-MM-DD HH24:MI:SS'))
FROM DUAL;

परिणाम:

01-JAN-31

इस मामले में, समय का हिस्सा दोपहर के बाद का था, और तारीख को अगले दिन (जो कि अगले महीने और वर्ष के रूप में भी हुआ) के लिए गोल किया गया था।

इसे उस दिन के लिए पूर्णांकित किया गया था क्योंकि यह गोल करने के लिए डिफ़ॉल्ट इकाई है, और हमने स्पष्ट रूप से कोई भिन्न इकाई निर्दिष्ट नहीं की है।

यहां बताया गया है कि जब मैं दोपहर से पहले का समय घटाता हूं तो क्या होता है:

SELECT 
    ROUND(TO_DATE('2030-12-31 11:59:59', 'YYYY-MM-DD HH24:MI:SS'))
FROM DUAL;

परिणाम:

31-DEC-30

इस बार इसे उसी दिन गोल कर दिया गया है।

ध्यान दें कि लौटाया गया दिनांक प्रारूप आपके NLS_DATE_FORMAT . के मान पर निर्भर करता है पैरामीटर (यदि आप रुचि रखते हैं तो अपने सत्र के लिए दिनांक मानों को प्रारूपित करने का तरीका यहां दिया गया है)।

एक निर्दिष्ट तिथि इकाई के लिए गोल

दिनांक को पूर्ण करने के लिए भिन्न दिनांक इकाई निर्दिष्ट करने का एक उदाहरण यहां दिया गया है:

SELECT 
    ROUND(DATE '2030-12-31', 'MONTH')
FROM DUAL;

परिणाम:

01-JAN-31

यहाँ यह फिर से है, लेकिन कई अन्य तिथियों के साथ:

SELECT 
    ROUND(DATE '2030-03-10', 'MONTH') AS "2030-03-10",
    ROUND(DATE '2030-03-18', 'MONTH') AS "2030-03-18",
    ROUND(DATE '2030-08-10', 'MONTH') AS "2030-08-10",
    ROUND(DATE '2030-08-10', 'MONTH') AS "2030-08-10"
FROM DUAL;

परिणाम:

   2030-03-10    2030-03-18    2030-08-10    2030-08-10 
_____________ _____________ _____________ _____________ 
01-MAR-30     01-APR-30     01-AUG-30     01-AUG-30    

और यहाँ यह एक ही तारीख के साथ है, लेकिन विभिन्न प्रारूप तत्व:

SELECT 
    ROUND(DATE '2030-10-31', 'DAY') AS "Day",
    ROUND(DATE '2030-10-31', 'WW') AS "Week of year",
    ROUND(DATE '2030-10-31', 'MONTH') AS "Month",
    ROUND(DATE '2030-10-31', 'YEAR') AS "Year"
FROM DUAL;

परिणाम:

         Day    Week of year        Month         Year 
____________ _______________ ____________ ____________ 
03-NOV-30    29-OCT-30       01-NOV-30    01-JAN-31    

यह दर्शाता है कि निर्दिष्ट तिथि इकाई के आधार पर हमारे पास कितनी भिन्नता हो सकती है।

नकारात्मक तिथि

यहां बताया गया है कि जब हम उन्हें नकारात्मक तिथियों में बदल देते हैं तो क्या होता है:

SELECT 
    ROUND(DATE '-2030-10-31', 'DAY') AS "Day",
    ROUND(DATE '-2030-10-31', 'WW') AS "Week of year",
    ROUND(DATE '-2030-10-31', 'MONTH') AS "Month",
    ROUND(DATE '-2030-10-31', 'YEAR') AS "Year"
FROM DUAL;

परिणाम:

         Day    Week of year        Month         Year 
____________ _______________ ____________ ____________ 
28-OCT-30    29-OCT-30       01-NOV-30    01-JAN-29    

जाहिर है, तारीख बदलते ही परिणाम बदल जाएंगे।

गैर-दिनांक तर्कों को गोल करना

यहां बताया गया है कि जब हम एक गैर-दिनांक तर्क को गोल करने का प्रयास करते हैं जिसे DATE में परिवर्तित नहीं किया जा सकता है डेटा प्रकार:

SELECT ROUND('Bruce')
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT ROUND('Bruce')
FROM DUAL
Error report -
ORA-01722: invalid number

हालांकि, हम संख्याओं को गोल कर सकते हैं - इस फ़ंक्शन का एक संख्यात्मक संस्करण है जो हमें संख्याओं को गोल करने की अनुमति देता है।

शून्य मान

null round को गोल करने की कोशिश की जा रही है रिटर्न null , और दिनांक को null . के अनुसार पूर्णांकित करने का प्रयास कर रहा है null में भी परिणाम होता है :

SET NULL 'null';

SELECT 
    ROUND(null),
    ROUND(null, 'MONTH'),    
    ROUND(DATE '2030-12-20', null)
FROM DUAL;

परिणाम:

   ROUND(NULL)    ROUND(NULL,'MONTH')    ROUND(DATE'2030-12-20',NULL) 
______________ ______________________ _______________________________ 
          null                   null null                            

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

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

गलत तर्क गणना

कॉलिंग ROUND() कोई तर्क पारित किए बिना एक त्रुटि देता है:

SELECT ROUND()
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT ROUND()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"
*Cause:    
*Action:

और तर्कों की गलत संख्या पास करने से त्रुटि होती है:

SELECT ROUND(DATE '2030-12-20', 'day', 'month')
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT ROUND(DATE '2030-12-20', 'day', 'month')
FROM DUAL
Error at Command Line : 1 Column : 40
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"
*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. ओरेकल | डुप्लिकेट रिकॉर्ड हटाएं

  2. उस कथन के ट्रिगर के अंदर किसी कथन से प्रभावित पंक्तियों की संख्या कैसे प्राप्त करें

  3. क्या डेटाबेस संरचना में परिवर्तन के लिए कोई संस्करण नियंत्रण प्रणाली है?

  4. कैसे जांचें कि कर्सर ऑरैकल में कोई रिकॉर्ड देता है या नहीं?

  5. Oracle SQL डेवलपर में विदेशी कुंजी कैसे बनाएं?