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

Oracle में महीने के नाम के बाद अनुगामी रिक्त स्थान कैसे निकालें?

अगर आपने कभी 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 . के सामने )।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle में listagg का विकल्प?

  2. Oracle और SQL सर्वर के बीच रिक्त स्थान को संभालने का अंतर

  3. Oracle में एक यूनिक्स टाइमस्टैम्प को दिनांक मान में बदलें

  4. Oracle क्लाउड के लिए Oracle वॉलेट का उपयोग करने के लिए Pentaho डेटा एकीकरण को कॉन्फ़िगर करना

  5. MyBatis सूची मान डालें