2014-01-06 96 views

回答

3

您正在尋找這樣的事情,

WITH t(date1, date2) AS 
(
    SELECT to_date('01/01/2014', 'dd/mm/yyyy'), 
      to_date('31/01/2014','dd/mm/yyyy')+1 -- Adding 1 to calculate the last day too. 
    FROM DUAL 
) 
    SELECT count(days) day_count, day 
      DAY 
    FROM(
      SELECT date1 + LEVEL -1 days, 
       to_char(date1 + LEVEL -1, 'FmDay') DAY, --Use `FmDay`, this will remove the Embedded spaces. 
       to_char(date1 + LEVEL -1, 'D') DAY# 
      FROM t 
      CONNECT BY LEVEL <= date2 - date1 
     ) 
    WHERE day = 'Monday' --Filter with day, if you want to get the count for a specific day. 
    GROUP BY DAY, day# 
    ORDER BY day#; 
+0

如何獲得特定的一天嗎?例如星期一隻... –

+0

@VondRitz,只需過濾o/p like,'WHERE day ='Sunday''我會更新我的答案。 – Dba

+0

我試過了。但它不適合我。謝謝。 –

0

你不會有直接的解決方案。在Oracle中,你有這樣的形式知道星期幾是一個特定的日期:

to_char(to_date('01012014', 'ddmmyyyy'), 'Day') 

我會建議你做一個簡單的算法商店的過程,它接收三個參數,然後顯示你的信息需要。把它放在查詢中,並完成。