Oracle डाटाबेस में, TRUNC(date)
फ़ंक्शन दिए गए दिनांक मान को दिन के समय भाग के साथ निर्दिष्ट प्रारूप मॉडल में प्रदान की गई इकाई को छोटा कर देता है।
Oracle में एक TRUNC(number)
भी है सिंटैक्स, जिसका उपयोग संख्याओं पर किया जाता है। यह लेख केवल TRUNC(date)
. के बारे में है सिंटैक्स, जिसका उपयोग तिथियों पर किया जाता है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
TRUNC(date [, fmt ])
जहां date
काटने की तिथि है, और fmt
एक वैकल्पिक प्रारूप मॉडल है जो उस इकाई को निर्दिष्ट करता है जिसके लिए मान को छोटा करना है। प्रारूप मॉडल TRUNC(date)
. के लिए समर्थित प्रारूप मॉडल में से कोई भी हो सकता है और ROUND(date)
कार्य।
फ़ंक्शन ग्रेगोरियन कैलेंडर के नियमों के अनुसार संचालित होता है (यह NLS_CALENDAR
के मान के प्रति संवेदनशील नहीं है) पैरामीटर)।
उदाहरण
यहां एक उदाहरण दिया गया है:
SELECT TRUNC(DATE '2035-08-22', 'MONTH')
FROM DUAL;
परिणाम:
01-AUG-35
यहाँ कुछ और हैं:
SELECT
TRUNC(DATE '2035-08-22', 'D') AS "D",
TRUNC(DATE '2035-08-22', 'DD') AS "DD",
TRUNC(DATE '2035-08-22', 'MONTH') AS "Month",
TRUNC(DATE '2035-08-22', 'YEAR') AS "Year",
TRUNC(DATE '2035-08-22', 'CC') AS "CC"
FROM DUAL;
परिणाम:
D DD Month Year CC ____________ ____________ ____________ ____________ ____________ 19-AUG-35 22-AUG-35 01-AUG-35 01-JAN-35 01-JAN-01
परिणाम वर्तमान सत्र के दिनांक प्रारूप के अनुसार स्वरूपित किया गया है। वर्तमान सत्र के दिनांक प्रारूप की जांच कैसे करें और वर्तमान सत्र के लिए दिनांक प्रारूप कैसे बदलें, इसके बारे में अधिक जानकारी के लिए देखें।
डिफ़ॉल्ट दिनांक इकाई
डिफ़ॉल्ट दिनांक इकाई DD
है :
SELECT
TRUNC(DATE '2035-08-22') AS "Default",
TRUNC(DATE '2035-08-22', 'DD') AS "DD"
FROM DUAL;
परिणाम:
Default DD ____________ ____________ 22-AUG-35 22-AUG-35
की तुलना में ROUND()
TRUNC(date)
फ़ंक्शन ROUND(date)
. से भिन्न है समारोह। ROUND()
फ़ंक्शन कुछ उदाहरणों में तारीख को ऊपर और दूसरों में नीचे की ओर ले जाता है। TRUNC()
दूसरी ओर, फ़ंक्शन, बिना गोल किए निर्दिष्ट इकाई की तारीख को छोटा कर देता है।
इस अंतर को प्रदर्शित करने के लिए यहां एक तुलना है:
SELECT
TRUNC(DATE '2030-12-31', 'MONTH') AS "Trunc",
ROUND(DATE '2030-12-31', 'MONTH') AS "Round"
FROM DUAL;
परिणाम:
Trunc Round ____________ ____________ 01-DEC-30 01-JAN-31
शून्य मान
यदि दोनों में से कोई भी तर्क null
है , परिणाम null
. है :
SET NULL 'null';
SELECT
TRUNC(null, 'D'),
TRUNC(date'2020-12-30', null)
FROM DUAL;
परिणाम:
TRUNC(NULL,'D') TRUNC(DATE'2020-12-30',NULL) __________________ _______________________________ null null
डिफ़ॉल्ट रूप से, SQLcl और SQL*Plus जब भी SQL SELECT
के परिणामस्वरूप एक रिक्त मान उत्पन्न होता है तो एक रिक्त स्थान लौटाता है बयान।
हालांकि, आप SET NULL
. का उपयोग कर सकते हैं वापस करने के लिए एक अलग स्ट्रिंग निर्दिष्ट करने के लिए। यहाँ मैंने निर्दिष्ट किया है कि स्ट्रिंग null
वापस किया जाना चाहिए।
अवैध तर्क गणना
कॉलिंग TRUNC()
बिना तर्क के त्रुटि उत्पन्न होती है:
SELECT TRUNC()
FROM DUAL;
परिणाम:
Error starting at line : 1 in command - SELECT TRUNC() 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 TRUNC(1, 2, 3)
FROM DUAL;
परिणाम:
Error starting at line : 1 in command - SELECT TRUNC(1, 2, 3) FROM DUAL Error at Command Line : 1 Column : 20 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: