需要在一个查询中生成日历列表直到“11-30-2014”。但不是所有的日子,只有工作日(星期一至星期五)和假期除外。假期天存放在holidays
表中。 oracle DB中的特殊表dual
用于生成。使用一个查询生成日历直到特殊日期
SELECT to_date(current_date + level-1,'MM-DD-YY') as Calendar
FROM dual, holidays
WHERE to_date(current_date,'MM-DD-YY')+level-1 <= to_date('11-30-14','MM-DD-YY')
AND to_char(to_date(current_date,'MM-DD-YY')+level-1,'D') NOT IN (6,7)
CONNECT BY level <= 365
MINUS
SELECT to_date(data,'MM-DD-YY')
FROM holidays;
我这样做,但是我心脏这种情况下,可以通过4线来完成。更简单。如果有人有任何想法如何使这更容易,那么谢谢!
如果您想要生成2014年至11月11日,这是一年多的时间,为什么限制为365天?你为什么要调用'to_date()'来处理已经是日期的事情 - 你引入了对'NLS_DATE_FORMAT'的依赖,以及效率低下? –