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: