簡體   English   中英

兩個日期之間的特定天數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM