各位大神和老师,请问一下,以下问题能不能用python/SQL/VBA/其它任何语言代码,只要能解决一下。
“根据上面图标红色那两列判断有没有超时,规则为:
1、工作日内4小时内审批完才算不超时
2、剔除时间包括双休日、节假日、中午12:00-13:30,晚上18:00-早上8:30,双休日和节假日如果不能系统判断就手动创建集合”
最终也需要将结果输出到EXCEL表对应的同一行上,跪求操作方式和代码。(之前用EXCEL函数算的,太麻烦还总有漏的地方,比如两个日期有一个是节假日的时候)
菜鸟遇到日期判断问题跪求大神协助
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- CSDN专家-文盲老顾 2021-06-02 12:25关注
ALTER FUNCTION [dbo].[节假日用时] ( @s datetime,@e datetime ) RETURNS int AS BEGIN DECLARE @result int,@min int,@p int SELECT @result = 0,@min = DATEDIFF(minute,@s,@e) set @p=(@min-1)/2048+1 ;with t as ( select a.number+b.number*2048 as n from ( select number from master..spt_values where type='p' ) a ,( select number from master..spt_values where type='p' and number<@p ) b ) select @result = ( select COUNT(0) from ( select *,(case -- <510 分钟表示为8:30之前 when pass_min<510 then 0 -- >1080 分钟表示为18:00之后 when pass_min>=1080 then 0 -- 720-810表示 12:00-13:30 when pass_min>=720 and pass_min<810 then 0 -- 节假日自行建立holidy表 --when 上班='否' --then 0 -- weekday 1、7 表示周六日 when DATEPART(WEEKDAY,curr_day) in (1,7) --and 上班='否' then 0 else 1 end ) as 工时 from ( select *,DATEDIFF(minute,curr_day,curr_minute) as pass_min --,isnull(b.是否上班,'否') as 上班 from ( select DATEADD(minute,n,@s) as curr_minute ,CONVERT(date,DATEADD(minute,n,@s)) as curr_day from t where n<@min ) a --left join holiday b on DATEPART(year,curr_day)=b.year and DATEPART(month,curr_day)=b.month and DATEPART(day,curr_day)=b.day ) a ) a where 工时=0 ) RETURN @result END
上边那个太繁琐了,换了个计算方式,最后 工时=0 ,统计非用工时间分钟数,工时=1,统计用工时间分钟数
=0是上边的sql不用改,=1,就直接去掉个字段,这个值就可以作为用时分钟使用,非用工用时就用不到了
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥50 求恶意流量检测系统搭建教程( C++ python C)
- ¥15 mmseqs内存报错
- ¥15 vika文档如何与obsidian同步
- ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
- ¥15 陆空双模式无人机飞控设置
- ¥15 sentaurus lithography
- ¥100 求抖音ck号 或者提ck教程
- ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)
- ¥20 web页面如何打开Outlook 365的全球离线通讯簿功能
- ¥15 io.jsonwebtoken.security.Keys