[英]How do I get the number of business days between two dates for a particular month
[英]Number of particular days between two dates
有沒有一種“簡便”的方法來計算兩個日期之間特定日期的計數(例如,我想知道2000年1月1日到今天之間的星期二數)? 此外,同一問題在更廣泛的范圍內適用於不同的單位(例如,兩個日期之間有2 pms、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函數可以做到這一點,它可以解決leap日等問題。
編輯 這在相關鏈接彈出時,我張貼了這個。 或多或少地回答了幾天的問題,而且我知道我可以在特定的幾個月內使用months_between
函數。 我應該了解其他相關功能嗎?
將開始/結束日期替換為您的日期。 該查詢從2013年1月1日到今天的TUE的計算數量為18:
SELECT count(*) number_of_tue
FROM
(
SELECT TRUNC(TO_DATE(Sysdate), 'YEAR') + LEVEL-1 start_dt
, To_Char(TRUNC(TO_DATE(Sysdate), 'YEAR') + LEVEL - 1, 'DY') wk_day
, To_Char(TRUNC(TO_DATE(Sysdate), 'YEAR') + LEVEL - 1, 'D') wk_day#
, trunc(Sysdate) end_dt
FROM DUAL
CONNECT BY LEVEL <= trunc(Sysdate) - trunc(Sysdate, 'YEAR') -- replace with your start/end dates
)
WHERE wk_day# = 3 -- OR wk_day = 'TUE' --
/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.