扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
求出一年中(以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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者