如何计算日期范围与特定日期之间的天数?

时间:2014-01-06 04:02:31

标签: oracle11g

如何计算日期范围与特定日期之间的天数?

示例:

START_DT = 2014年1月1日;

END_DT = 2014年1月31日;

Day =:SampleDay

示例结果:

星期一= 4,

星期二= 4,

星期三= 5

请帮忙。 :|

2 个答案:

答案 0 :(得分: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#;

答案 1 :(得分:0)

您无法直接解决此问题。在oracle中,您可以使用此表单来了解特定日期的哪一天:

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

我建议您使用简单的算法制作商店程序,该算法接收这三个参数,然后显示您需要的信息。把它放在查询中就完成了。