如何计算两个日期之间的工作时间

wayne1027 2014-01-13 08:31:39
条件如下1:只计算9:00-18:00之间(18点之后到次日9点的时间不算工作时间);
2:周末两日时间不算工作时间;
3:法定节假日时间不算工作时间;(如2014/1/1不计算在内)
4:双休日调正常上班的日期算工作时间;(如2014/1/26为法定工作日)
5:如开始时间或结束时间在周末或法定节假日内,则算为最近的工作日时间(如 2014/1/1 17:21,则算为2013/12/31 18:00或2014/1/2 09:00);
6:精确到分钟;


T1 T2 Mins
2013/12/31 9:38 2013/12/31 11:38 121.00
2013/12/31 9:38 2014/1/7 11:21 2262.00
2014/1/24 10:19 2014/1/27 10:19 1080.00

做了个excel计算,但想了想还是在sql中拉取数据比较有效率,但sql比较不精通。提供excel计算范本供参考http://pan.baidu.com/s/1sjPfNWD

有什么没有描述清楚的还请告知。
...全文
377 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
TYPHOON0000 2014-01-14
  • 打赏
  • 举报
回复
用datediff(minute,T1,T2)这个函数。
wayne1027 2014-01-14
  • 打赏
  • 举报
回复
在excel我的写法是这样 定义名称: A_ = LOOKUP(MOD(T_,1),--{0,"9:00","18:00"},{0,1,0}) T_ = ROW(INDIRECT(ROUND(MOD(test!$A1,1)*1440,)&":"&ROUND((test!$B1-INT(test!$A1))*1440-1,)))/1440 =SUMPRODUCT(A_*(NETWORKDAYS(T_+INT(A1),T_+INT(A1),$H$2:$H$6)+COUNTIF($J$2:$J$6,INT(T_+INT(A1))))) H2:H6 是节日时间 J2:J6是双休日调正常工作日 SQL中应该也能按这样写法实现吧
wayne1027 2014-01-14
  • 打赏
  • 举报
回复
假设原表为dbo.timetable 结构如下 T1 T2 2013/12/31 9:38 2013/12/31 11:38 2013/12/31 9:38 2014/1/7 11:21 2014/1/24 10:19 2014/1/27 10:19 如何计算T1,T2之间的工作时长 照二楼说应该是要新加一至两个表(存储法定节假日及双休日调正常上班日期), dbo.holiday Day 2014/1/1 2014/1/31 …… 及dbo.workday Day 2014/1/16 …… 几位能否写个语句看一下,鄙人对SQL函数不是很懂,属于只能看懂没法动手的残疾人士…… 还望几位不吝赐教,十分感谢。
發糞塗牆 2014-01-14
  • 打赏
  • 举报
回复
这种查询单纯的sql估计要写好几千行,做日历表貌似是最好的办法
  • 打赏
  • 举报
回复
然后,可以先维护,然后再导入到表中,就可以了
  • 打赏
  • 举报
回复
建议你做一个企业日历把,这样就非常灵活,可以定义每天是周几,是否是周六日,是否是法定假日
shoppo0505 2014-01-13
  • 打赏
  • 举报
回复
1. 很容易做 2. 很容易做 3. 需要信息表示此日为法定假日。 4. 需要信息表示此日为调休日。 5. 需要信息表示此日之前以及之后的工作日。 6. 很容易做 总体来说,需要其他信息,不然不好做。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧