फ्लोरिन का जवाब है कि मैं इसे कैसे करूंगा, लेकिन आपको एनएलएस सेटिंग्स के बारे में थोड़ा सावधान रहने की जरूरत है। सप्ताह का दिन एनएलएस क्षेत्र से प्रभावित होता है, इसलिए यदि मैं इसे यू.एस. में चलाता हूं तो यह काम करता है:
alter session set nls_territory = 'AMERICA';
select to_char(sysdate, 'D') as d, to_char(sysdate, 'Day') as day from dual;
D DAY
- ------------------------------------
6 Friday
select level as dow,
to_char(trunc(sysdate ,'D') + level, 'Day') as day
from dual
connect by level <= 7;
DOW DAY
--- ------------------------------------
1 Monday
2 Tuesday
3 Wednesday
4 Thursday
5 Friday
6 Saturday
7 Sunday
लेकिन यूके में चलने वाली वही क्वेरी एक दिन की छुट्टी है:
alter session set nls_territory = 'UNITED KINGDOM';
select to_char(sysdate, 'D') as d, to_char(sysdate, 'Day') as day from dual;
D DAY
- ------------------------------------
5 Friday
select level as dow,
to_char(trunc(sysdate ,'D') + level, 'Day') as day
from dual
connect by level <= 7;
DOW DAY
--- ------------------------------------
1 Tuesday
2 Wednesday
3 Thursday
4 Friday
5 Saturday
6 Sunday
7 Monday
... और मुझे उसके लिए सही करने के लिए गणना को समायोजित करने की आवश्यकता है:
select level as dow,
to_char(trunc(sysdate ,'D') + level - 1, 'Day') as day
from dual
connect by level <= 7;
DOW DAY
--- ------------------------------------
1 Monday
2 Tuesday
3 Wednesday
4 Thursday
5 Friday
6 Saturday
7 Sunday
आप चाहें तो दिन के नामों के लिए इस्तेमाल की जाने वाली भाषा भी अलग से निर्दिष्ट कर सकते हैं:
select level as dow,
to_char(trunc(sysdate ,'day') + level - 1, 'Day',
'NLS_DATE_LANGUAGE=FRENCH') as day
from dual
connect by level <= 7;
DOW DAY
--- --------------------------------
1 Lundi
2 Mardi
3 Mercredi
4 Jeudi
5 Vendredi
6 Samedi
7 Dimanche
to_char()
. के लिए दस्तावेज़ीकरण nls_date_language
. के साथ और सप्ताह का दिन, और वैश्वीकरण सहायता मार्गदर्शिका में और भी बहुत कुछ।