方法は次のとおりです。 CTE(dates
)2018-10-01
から始まるすべての日付の「カレンダー」を作成します 、2018-10-01
の間の日数 および2018-12-31
。これで2番目の質問に答えます。
最初の質問では、TO_CHAR
を使用します 適切なフォーマットマスク(dy
)と日付の言語(使用しなかった場合は、クロアチア語の名前がデフォルトの言語であるため)、すべての日曜日を選択します。
SQL> with dates as
2 (select date '2018-10-01' + level - 1 datum
3 from dual
4 connect by level <= date '2018-12-31' - date '2018-10-01' + 1
5 )
6 select datum
7 From dates
8 where to_char(datum, 'dy', 'nls_date_language = english') = 'sun';
DATUM
-----------
07-oct-2018
14-oct-2018
21-oct-2018
28-oct-2018
04-nov-2018
11-nov-2018
18-nov-2018
25-nov-2018
02-dec-2018
09-dec-2018
16-dec-2018
23-dec-2018
30-dec-2018
13 rows selected.
SQL>