2 つの日付の間の特定の日の数を計算する「簡単な」方法はありますか (たとえば、2000 年 1 月 1 日から今日までの火曜日の数を知りたいとします)。さらに、同じ質問がさまざまな単位に広く適用されます (たとえば、2 つの日付の間の午後 2 時、2 月の数、8 月 21 日の数など)... 私が思いついた最高のもの (日付間の日数)これは:
with calendar as (
select to_char(:start + level - 1, 'DAY') dayOfWeek
from dual
connect by level <= ceil(:end - :start)
)
select dayOfWeek, count(dayOfWeek)
from calendar
group by dayOfWeek;
これのビューを作成する必要があります-開始日と終了日をハードコーディングして、使いやすくします。それか、汚い仕事をする関数を書いてください。それは難しいことではありませんが、うるう日などを考慮して、これを行うことができるOracle関数がすでに存在するかどうか疑問に思っています.
EDIT これを投稿したときに、関連リンクにポップアップしました。それは多かれ少なかれ数日間の質問に答えておりmonths_between
、特定の月に使用できる関数があることを知っています. 知っておくべきその他の関連機能はありますか?