sql महीनों - महीने का नाम, दिन का नाम, सप्ताह संख्या और दो तिथियों के बीच दिन का नंबर उत्पन्न करें




संस्कृत में (2)

यह रो जेनरेटर विधि का उपयोग करना आसान होना चाहिए। बाकी केवल प्रारूप मास्क है

  • एफएम महीने - महीना का नाम
  • fmDay - दिन का नाम
  • आईडब्ल्यू - सप्ताह संख्या
  • डी -डे नंबर

एसक्यूएल * प्लस में , मेरा डेमो दिनांक 2012-01-01 और '2012-02-20' के बीच है :

SQL> def date_start = '2012-01-01'
SQL> def date_end   = '2012-02-20'
SQL>
SQL> WITH DATA AS
  2    (SELECT to_date('&date_start', 'YYYY-MM-DD') date1,
  3      to_date('&date_end', 'YYYY-MM-DD') date2
  4    FROM dual
  5    )
  6  SELECT TO_CHAR(date1+LEVEL-1, 'fmMonth') month_name,
  7         TO_CHAR(date1+LEVEL-1, 'fmDay') day_name,
  8         TO_CHAR(date1+LEVEL-1, 'IW') the_week,
  9         TO_CHAR(date1+level-1, 'D') the_day
 10  FROM data
 11    CONNECT BY LEVEL <= date2-date1+1
 12  /
old   2:   (SELECT to_date('&date_start', 'YYYY-MM-DD') date1,
new   2:   (SELECT to_date('2012-01-01', 'YYYY-MM-DD') date1,
old   3:     to_date('&date_end', 'YYYY-MM-DD') date2
new   3:     to_date('2012-02-20', 'YYYY-MM-DD') date2

परिणाम

MONTH_NAME DAY_NAME  THE_WEEK THE_DAY
---------- --------- -------- -------
January    Sunday    52       1
January    Monday    01       2
January    Tuesday   01       3
January    Wednesday 01       4
January    Thursday  01       5
January    Friday    01       6
January    Saturday  01       7
January    Sunday    01       1
January    Monday    02       2
January    Tuesday   02       3
January    Wednesday 02       4
January    Thursday  02       5
January    Friday    02       6
January    Saturday  02       7
January    Sunday    02       1
January    Monday    03       2
January    Tuesday   03       3
January    Wednesday 03       4
January    Thursday  03       5
January    Friday    03       6
January    Saturday  03       7
January    Sunday    03       1
January    Monday    04       2
January    Tuesday   04       3
January    Wednesday 04       4
January    Thursday  04       5
January    Friday    04       6
January    Saturday  04       7
January    Sunday    04       1
January    Monday    05       2
January    Tuesday   05       3
February   Wednesday 05       4
February   Thursday  05       5
February   Friday    05       6
February   Saturday  05       7
February   Sunday    05       1
February   Monday    06       2
February   Tuesday   06       3
February   Wednesday 06       4
February   Thursday  06       5
February   Friday    06       6
February   Saturday  06       7
February   Sunday    06       1
February   Monday    07       2
February   Tuesday   07       3
February   Wednesday 07       4
February   Thursday  07       5
February   Friday    07       6
February   Saturday  07       7
February   Sunday    07       1
February   Monday    08       2

51 rows selected.

SQL>

मेरे पास दो तारीख चर है और मैं विशिष्ट तरीके से डेटा प्रस्तुत करना चाहता हूं। तो, मेरी क्वेरी इस तरह की है कि महीने के नाम से पता चलता है,

    SELECT TO_CHAR (ADD_MONTHS (start_date, LEVEL - 1), 'fmMonth') months_namE
      FROM (SELECT DATE '2012-01-01' start_date, DATE '2012-03-25' end_date
              FROM DUAL)
CONNECT BY LEVEL <=
                MONTHS_BETWEEN (TRUNC (end_date, 'MM'),
                                TRUNC (start_date, 'MM'))
              * +1;

और आउटपुट इस तरह है,

MONTHS_NAME
-----------
January
February

मेरा इरादा आउटपुट इस तरह है

MONTHS_NAME | WEEK | DAYS
-------------------------
January        1      1
January        1      2 
January        1      3 
January        1      4
January        1      5
January        1      6
January        1      7   
January        2      1
January        3
January        4

मैंने कई तरीकों की कोशिश की और इसे काम नहीं किया, कृपया मेरी मदद करें ...


आइए निम्नलिखित 2 टेबल (वेतन और कर्मचारी)

अब मैं उन रिकॉर्ड्स को कर्मचारी तालिका से चाहता हूं जो वेतन में नहीं हैं। हम इसे 3 तरीकों से कर सकते हैं-

  1. आंतरिक जुड़ने का उपयोग करना

    कर्मचारी से * चुनें जहां आईडी नहीं है (e.id = s.id पर कर्मचारी और आंतरिक वेतन वेतन से ई.आईडी चुनें)

  1. बाएं बाहरी शामिल होने का उपयोग करना

    e.id = s.id पर कर्मचारी ई से बाहर निकलें और शेष में शामिल हों, जहां s.id शून्य है

  1. पूर्ण जुड़ें का उपयोग करना

    e.id = s.id पर कर्मचारी और पूर्ण बाहरी वेतन वेतन से चुनें * e.id में नहीं (वेतन से आईडी का चयन करें)





sql oracle calendar