मेरे पास है

Year : 2011
Month: Nov
Day: Sun
WeekNumber(Monthwise): 4

इच्छा आउटपुट:

Date
--------
2011-11-20

मैं इसे एक एकल SQL कथन में कैसे कर सकता हूं?

धन्यवाद

1
user1025901 3 नवम्बर 2011, 16:24

3 जवाब

सबसे बढ़िया उत्तर

मैं शायद NEXT_DAY फ़ंक्शन का उपयोग करना चाहता हूं जो कि दिए गए दिनांक के बाद होने वाले कार्यदिवस के पहले दिन को लौटाता है। एक बार जब आप इसे प्राप्त कर लेते हैं, तो आप आवश्यक सप्ताहों की संख्या जोड़ सकते हैं।

इसका एक उदाहरण हो सकता है:

with test_data as (
  select
    '2011' as the_year,
    'Nov' as the_month,
    'Sun' as the_day,
    4 as the_week
  from dual
)
select 
  the_year, the_month, the_day, the_week,
  next_day(to_date(the_year||the_month, 'YYYYMON') - 1, the_day) + 
    7* (the_week -1) as the_date
from test_data
4
Mike Meyers 3 नवम्बर 2011, 17:53

यह काम कर सकता है।

SELECT NEXT_DAY( TO_DATE(TO_CHAR((4-1)*7) || '-' || 'NOV' || '-' || '2011','dd-mon-yyyy') ,'Sun') 
FROM DUAL

देखें: http://download.oracle.com/docs /cd/B19306_01/server.102/b14200/functions093.htm

1
Kevin Burton 4 नवम्बर 2011, 10:17
मेरे लिए काम किया, त्रुटि शायद इसलिए है क्योंकि मैंने दिनांक प्रारूप निर्दिष्ट नहीं किया है, अपडेट किया है।
 – 
Kevin Burton
4 नवम्बर 2011, 10:16

प्रयत्न :

SELECT A.B + B.D YourDate 
FROM (SELECT TO_DATE (Your4DigitYear || LPAD ( YourMonth, 2, '0' ) || LPAD ( DECODE (YourWeekOfMonth, 1, '1', (YourWeekOfMonth - 1) * 7 ), 2, '0' ), 'YYYYMMDD') B FROM DUAL) A, (SELECT LEVEL - 1 D FROM DUAL CONNECT BY LEVEL < 15) B WHERE 
TO_CHAR (A.B + B.D, 'D' ) = YourDayOfWeek AND 
TO_CHAR (A.B + B.D, 'W' ) = YourWeekOfMonth;
0
Yahia 3 नवम्बर 2011, 17:59