是否有一种“简单”的方法来计算两个日期之间某一天的计数(例如,我想知道2000年1月1日至今的星期二的数量)?此外,同样的问题更广泛地适用于不同的单位(例如,两个日期之间有多少2pms,Februaries有多少,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;
我将不得不创建一个视图 - 硬编码的开始和结束日期 - 使它方便(ish)使用;或者写一个函数来完成肮脏的工作。那会不会是困难的,但我不知道是否已经有一个Oracle功能,可以做到这一点,占之类的飞跃天等
编辑This的相关链接时弹出我发布了这个。这或多或少地回答了几天的问题,我知道在某些月份我可以使用months_between
函数。任何其他我应该知道的相关功能?
见http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions002.htm#i88891有关Oracle日期函数的列表。 – 2013-05-03 12:39:35
建立一个[日历表](http://www.perpendulum.com/2012/06/calendar-table-script-for-oracle/),你所有的日期问题都会消失。 – GarethD 2013-05-03 12:58:29