如何计算日期范围与特定日期之间的天数?
示例:
START_DT = 2014年1月1日;
END_DT = 2014年1月31日;
Day =:SampleDay
示例结果:
星期一= 4,
星期二= 4,
星期三= 5
请帮忙。 :|
答案 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')
我建议您使用简单的算法制作商店程序,该算法接收这三个参数,然后显示您需要的信息。把它放在查询中就完成了。