获取时间区间内工作日天数

588
0

yangqh 数据老手Lv5

发表于2024-8-2 14:05

楼主
由于不同的场景,对于“工作日”的定义可能不太一样,所以产品中没有直接的内置函数可以统一去求某时间区间内的工作日天数,但是在能够明确“工作日”统计规则的情况下,是可以根据需要去计算工作日天数的,具体举例如下:

场景一:
不考虑调休和节假日情况,周一到周五为工作日,报表中有计算参数@rq和@rq2分别供用户选择开始时间和结束时间,需要求时间区间内工作日天数;
表达式:(STRTODATE(@rq)..STRTODATE(@rq2)).select([2,3,4,5,6].find(weekday(@))>-1).count()
解析:
1、(STRTODATE(@rq)..STRTODATE(@rq2))表示输出时间区间内的日期,返回结果为数组格式;
2、.select()是数组函数,可社区内搜索数组函数介绍具体了解;
3、[2,3,4,5,6].find(weekday(@))>-1表示筛选中周一~周五,weekday()函数中1表示周天、2表示周一,依此类推;
4、.count()数组函数用法,求计数。

场景二:
周一到周五的基础上,需要考虑调休和节假日场景;
表达式:基于场景一的表达式基础上,select部分改成如下逻辑剔除法定节假日或者是补充调休日期判断:
.select(([2,3,4,5,6].find(weekday(@))>-1|[此处数组内写经调休要上班的周末日期].find(datetostr(@,'yyyymmdd'))>-1) & [此处数组内写周一~周五但不上班的日期].find(datetostr(@, 'yyyymmdd'))=-1, @)

最近看过此主题的会员

13430212034

esen_56F56PP7BD

esen_4TUELCHD9M

九天

一一

13533106982

esen_4Y3L5ADO80

0个回答

只看楼主

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号