दिनांक लौटाने वाले फ़ंक्शन के साथ काम करते समय, Oracle डेटाबेस NLS_DATE_FORMAT
के मान के आधार पर इन तिथियों को लौटाता है पैरामीटर।
एक NLS_TIMESTAMP_FORMAT
भी है पैरामीटर और एक NLS_TIMESTAMP_TZ_FORMAT
पैरामीटर, दोनों में एक डेटाटाइम प्रारूप मुखौटा है जिसे अलग से निर्दिष्ट किया जा सकता है।
इन सभी मापदंडों के अपने डिफ़ॉल्ट मान NLS_TERRITORY
. से व्युत्पन्न हैं पैरामीटर (जो डिफ़ॉल्ट रूप से, ऑपरेटिंग सिस्टम पर निर्भर है)।
इसलिए, अपने सत्र के लिए दिनांक स्वरूप बदलने के लिए, आप NLS_TERRITORY
को या तो अपडेट कर सकते हैं पैरामीटर, या प्रत्येक पैरामीटर को अलग-अलग स्पष्ट रूप से अपडेट करें।
यह लेख इन मानों को जांचने और बदलने और परिणाम देखने के उदाहरण प्रदान करता है।
प्रारंभिक सेटिंग जांचें
सबसे पहले, आइए NLS_DATE_FORMAT
के लिए मेरी वर्तमान सेटिंग की जांच करें पैरामीटर:
SELECT
PARAMETER,
VALUE
FROM V$NLS_PARAMETERS
WHERE PARAMETER IN (
'NLS_TERRITORY',
'NLS_DATE_FORMAT',
'NLS_TIMESTAMP_FORMAT',
'NLS_TIMESTAMP_TZ_FORMAT'
);
परिणाम:
पैरामीटर मान __________________________ _________________________________ NLS_TERRITORY ऑस्ट्रेलिया NLS_DATE_FORMAT DD/MON/RR NLS_TIMESTAMP_FORMAT DD/MON/RR HH12:MI:SSXFF AM NLS_TIMESTAMP_TZ_FORMAT DD/MON:RR HHHमेरे
NLS_TERRITORY
का मान पैरामीटर हैAUSTRALIA
, और इसलिए विभिन्न डेटाटाइम पैरामीटर ऑस्ट्रेलिया के लिए डिफ़ॉल्ट प्रारूप मॉडल का उपयोग करते हैं।यह मान प्रभावित करता है कि जब हम कुछ फ़ंक्शन का उपयोग करते हैं तो दिनांक कैसे स्वरूपित होता है। उदाहरण के लिए, यहां
SYSDATE
का उपयोग करने का एक उदाहरण दिया गया है वर्तमान तिथि वापस करने के लिए:SELECT SYSDATE FROM DUAL;
परिणाम:
04/AUG/21सेटिंग बदलें
हम
ALTER SESSION
. का उपयोग कर सकते हैं इन मापदंडों के लिए सेटिंग बदलने के लिए बयान।हमारे पास इनमें से प्रत्येक पैरामीटर को अलग-अलग बदलने या
NLS_TERRITORY
बदलने का विकल्प है पैरामीटर, जो स्वचालित रूप से उन प्रत्येक पैरामीटर को परोक्ष रूप से अपडेट करता है।
NLS_TERRITORY
बदलें पैरामीटरयहां
NLS_TERRITORY
को बदलने का एक उदाहरण दिया गया है पैरामीटर:ALTER SESSION SET NLS_TERRITORY = 'AMERICA';
परिणाम:
सत्र बदल दिया गया।आइए नए मानों की जाँच करें:
SELECT PARAMETER, VALUE FROM V$NLS_PARAMETERS WHERE PARAMETER IN ( 'NLS_TERRITORY', 'NLS_DATE_FORMAT', 'NLS_TIMESTAMP_FORMAT', 'NLS_TIMESTAMP_TZ_FORMAT' );
परिणाम:
पैरामीटर मान ______________________ _______________________ NLS_TERRITORY AMERICA NLS_DATE_FORMAT DD-MON-RR NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HFF।इसलिए हम देख सकते हैं कि, न केवल क्षेत्र को अपडेट किया गया है, बल्कि विभिन्न डेटाटाइम मापदंडों को भी अपडेट किया गया है।
बस
NLS_DATE_FORMAT
बदलें पैरामीटरयहां
NLS_DATE_FORMAT
को अपडेट करने का एक उदाहरण दिया गया है पैरामीटर:ALTER SESSION SET NLS_DATE_FORMAT = 'rr-mm-dd';
परिणाम:
सत्र बदल दिया गया।आइए नए मान की जाँच करें:
SELECT PARAMETER, VALUE FROM V$NLS_PARAMETERS WHERE PARAMETER IN ( 'NLS_TERRITORY', 'NLS_DATE_FORMAT', 'NLS_TIMESTAMP_FORMAT', 'NLS_TIMESTAMP_TZ_FORMAT' );
परिणाम:
पैरामीटर मान __________________ _______________________ NLS_TERRITORY AMERICA NLS_DATE_FORMAT rr-mm-dd NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIMESTAMP_TZ_FORMAT DD-MION-RR HFF पूर्व AM।जैसा अपेक्षित था, केवल
NLS_DATE_FORMAT
पैरामीटर को नए प्रारूप में बदल दिया गया है। अन्य अपरिवर्तित रहते हैं।अब जब हम
SYSDATE
run चलाते हैं , तारीख हमारे नए प्रारूप में लौटा दी जाती है, लेकिनSYSTIMESTAMP
NLS_TIMESTAMP_TZ_FORMAT
. का उपयोग करके इसे लौटाता है प्रारूप, जो अपरिवर्तित है:SELECT SYSDATE, SYSTIMESTAMP FROM DUAL;
परिणाम:
SYSDATE SYSTIMESTAMP ___________ _____________________________________________ 21-08-09 09-AUG-21 07.22.35.402453000 अपराह्न -04:00