अगर आपने कभी TO_CHAR()
. का इस्तेमाल किया है महीने के नाम का उपयोग करने वाली तारीख को प्रारूपित करने के लिए, आपने देखा होगा कि कभी-कभी महीने को सही पैडिंग के साथ वापस कर दिया जाता है।
यह डिफ़ॉल्ट रूप से तब होता है जब उपयोग में आने वाली भाषा और कैलेंडर के आधार पर महीने का नाम सबसे लंबे महीने के नाम से छोटा होता है।
उदाहरण के लिए, यदि आपकी भाषा अंग्रेजी है और कैलेंडर ग्रेगोरियन है, तो महीने का सबसे लंबा नाम सितंबर है, जो नौ वर्णों का है। यदि आप महीने को किसी तारीख से लौटाते हैं, और वह है, मार्च (पांच वर्ण लंबा), तो डिफ़ॉल्ट रूप से, मार्च में चार अनुगामी स्थान होंगे (5 + 4 =9)।
सौभाग्य से, यदि आवश्यक हो तो इस सही पैडिंग को हटाना आसान है। सही पैडिंग हटाने के लिए, fm
. का उपयोग करें प्रारूप संशोधक।
समस्या
सबसे पहले, यह वह समस्या है जिसे हम हल करने का प्रयास कर रहे हैं:
SELECT
TO_CHAR(date '2030-03-08', 'DD-MONTH-YYYY')
FROM DUAL;
परिणाम:
08-MARCH -2030
हम देख सकते हैं कि महीने के नाम और साल के बीच एक बड़ा अंतर है। यदि हम यह अंतर नहीं चाहते हैं, तो हम fm
. का उपयोग कर सकते हैं संशोधक, जैसा कि नीचे दिखाया गया है।
समाधान
अब ये रहा समाधान:
SELECT
TO_CHAR(date '2030-03-08', 'fmDD-MONTH-YYYY')
FROM DUAL;
परिणाम:
8-MARCH-2030
अब महीने और साल के बीच कोई अंतर नहीं है।
मैंने केवल fm
. के साथ फॉर्मेट मॉडल को प्रीपेन्ड किया था .
fm
प्रारूप संशोधक "फिल मोड" के लिए खड़ा है। डिफ़ॉल्ट रूप से Oracle प्रारूप तत्वों को एक स्थिर चौड़ाई में भरने के लिए अनुगामी रिक्त वर्णों और अग्रणी शून्य का उपयोग करता है। चौड़ाई प्रासंगिक प्रारूप मॉडल के लिए सबसे बड़े तत्व की प्रदर्शन चौड़ाई के बराबर है। fm
. का उपयोग करना संशोधक ऐसे सभी पैडिंग को दबा देता है।
आपने देखा होगा कि fm
संशोधक ने दिन की संख्या पर अग्रणी शून्य को भी दबा दिया। अगर हम यह नहीं चाहते हैं, तो हम fm
. रख सकते हैं MONTH
. के सामने संशोधक इसके बजाय प्रारूप तत्व।
इस तरह:
SELECT
TO_CHAR(date '2030-03-08', 'DD-fmMONTH-YYYY')
FROM DUAL;
परिणाम:
08-MARCH-2030
इस बार, fm
उस दिन लागू नहीं किया गया था, लेकिन यह था था महीने और साल के लिए लागू।
यदि हम वर्ष से अग्रणी शून्य को दबाना नहीं चाहते हैं, तो हमें एक और fm
जोड़ना होगा वर्ष से पहले।
यहां एक उदाहरण दिया गया है जो बताता है कि मेरा क्या मतलब है:
SELECT
TO_CHAR(date '0030-03-08', 'DD-fmMONTH-YYYY') AS "r1",
TO_CHAR(date '0030-03-08', 'DD-fmMONTH-fmYYYY') AS "r2"
FROM DUAL;
परिणाम:
r1 r2 ______________ ________________ 08-MARCH-30 08-MARCH-0030
पहला कॉलम केवल एक fm
का उपयोग करता है (MONTH
. के सामने )।
दूसरा कॉलम दो fm
. का उपयोग करता है संशोधक (MONTH
के सामने एक , और एक YYYY
. के सामने )।