科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道求出一年中(以2010年为例)所有的周六和周日或节假日的具体日期数

求出一年中(以2010年为例)所有的周六和周日或节假日的具体日期数

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

求出一年中(以2010年为例)所有的周六和周日或节假日的具体日期数

作者:csdn 来源:csdn 2009年12月22日

关键字: ORACLE 问答

  • 评论
  • 分享微博
  • 分享邮件

求出一年中(以2010年为例)所有的周六和周日或节假日的具体日期数

经国务院批准,国务院办公厅日前将2010年元旦、春节、清明节、劳动节、端午节、中秋节和国庆节放假调休日期的具体安排通知如下。

一、元旦:1月1日至3日放假公休,共3天。

二、春节:2月13日至19日放假调休,共7天。2月20日(星期六)、21日(星期日)上班。

三、清明节:4月3日至5日放假公休,共3天。

四、劳动节:5月1日至3日放假公休,共3天。

五、端午节:6月14日至16日放假调休,共3天。6月12日(星期六)、13日(星期日)上班。

六、中秋节:9月22日至24日放假调休,共3天。9月19日(星期日)、25日(星期六)上班。

七、国庆节:10月1日至7日放假调休,共7天。9月26日(星期日)、10月9日(星期六)上班。


现需求如下:
    由于最近公司有个考勤管理的系统,要求求出其中考勤统计中每个员工的请假时间。
  如果请假日期为周六和周日或法定节假日。就把请假的时间减去相应的共有天数。
比如说我的请假单上填写的日期为:2010-05-01至2010-05-06,就说明我请假(或调休)时间为3天(因为其中有3天是节假日)
如果这请假(或调休)时间的3天里面还有周六或周日的话,就再需要减去1-2天,最后请假(或调休)时间则为2-1天。

这就需要一个函数或存储过程求出一年中(以2010年为例)所有的周六和周日或节假日的具体日期数。如果节假日又恰好为周六或周日的话,(为了避免重复)那就只当作一个周六或周日的日期来看。
  然后根据请假的时间段,如:2010-05-01至2010-05-06,判断其是否包含在这些日期中,若包含的话,则再用请假(或调休)的总天数减去其中包含的天数。
   
  (如果可以的话!最好还帮我求出这些日期是该年的第几天?)

举个例子:
    2010年2月13日至19日(春节)放假调休,共7天
  而我想过年时提前请假回家,请假日期为:2010年2月08日至19日.则春节(2月13日至19日放假调休,共7天) 包含在请假日期中.而2月13日至19日分别是2010年的第44天或第50天!

 

设计一张日历表。 然后直接根据起始日期就知道有多少工作日了.
workCalendar(wdate date primary key,wkType int); -- 0 工作日,7 周未,9 法定假日
wdate        wkType
-----------  ------
2010-Jan-01  0
2010-Jan-02  7
2010-Jan-03  7
2010-Jan-04  0
2010-Jan-05  0
2010-Jan-06  0
2010-Jan-07  0
2010-Jan-08  0
2010-Jan-09  7
2010-Jan-10  7
2010-Jan-11  0
2010-Jan-12  0
2010-Jan-13  0
2010-Jan-14  0
2010-Jan-15  0
2010-Jan-16  7
2010-Jan-17  7
2010-Jan-18  0
2010-Jan-19  0
2010-Jan-20  0
2010-Jan-21  0
2010-Jan-22  0
2010-Jan-23  7
2010-Jan-24  7
2010-Jan-25  0
2010-Jan-26  0
2010-Jan-27  0
2010-Jan-28  0
2010-Jan-29  0
2010-Jan-30  7
2010-Jan-31  7
2010-Feb-01  0
2010-Feb-02  0
2010-Feb-03  0
2010-Feb-04  0
2010-Feb-05  0
2010-Feb-06  7
2010-Feb-07  7
2010-Feb-08  0
2010-Feb-09  0
2010-Feb-10  0
2010-Feb-11  0
2010-Feb-12  0
2010-Feb-13  9
2010-Feb-14  9
2010-Feb-15  9
2010-Feb-16  7
2010-Feb-17  7
2010-Feb-18  7
2010-Feb-19  7
2010-Feb-20  0
2010-Feb-21  0
2010-Feb-22  0
2010-Feb-23  0
2010-Feb-24  0
2010-Feb-25  0
2010-Feb-26  0
2010-Feb-27  7
2010-Feb-28  7
2010-Mar-01  0
2010-Mar-02  0
....

 

 


 

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章