各位大神和老师,请问一下,以下问题能不能用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无用
悬赏问题
- ¥20 wireshark抓不到vlan
- ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
- ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
- ¥15 stata安慰剂检验作图但是真实值不出现在图上
- ¥15 c程序不知道为什么得不到结果
- ¥40 复杂的限制性的商函数处理
- ¥15 程序不包含适用于入口点的静态Main方法
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来