sql 取一个月日期去掉周末的所有日期_已知开始日期和相隔天数/月数/年数,如何快速求结束日期?...

日常工作中,我们经常会遇到已知开始日期和相隔的天数,月数,年数,求结束日期。

例如,新员工转正日期,劳动合同到期日,员工退休日期,项目结束日期,结婚纪念日等等。

今天就跟大家分享几个函数,可以快速,准确计算出结束日期。

(Date,Edate,Workday与Workday.intl函数等)

20d6a38f5668c901c8bd4c59c24ed7d5.png

一.直接相加法

开始日期+间隔天数=结束日期

注意公式中所有字符全部为英文字符,输入汉语字符会出错。

6d33b0fd7531c81e247d7f7643af06b7.png

二.Date函数(常用)

Date函数的基本构型是Date(year,month,day),其作用是将提取的数字变为日期格式进行显示。

Date函数计算新员工转正日期:

新入职的员工一般要经过三个月的试用期,通过了相关考核后才可以转正。

7035fe2aaad65ae92af7a5b22474aff5.png

一般情况下,要在转正日期之前,公司要给员工试用期考核结果,来确定是否转正。

三.Edate函数(常用)

Edate函数的功能是计算某个日期前后指定月数的日期序列号。简单的说就是返回一段日期,从指定起始日期之前或之后的日期。

语法结构:Edate(start_date,months)

公式:=Edate(起始日期,月数)。

参数说明:

start_date:表示起始日期的日期。

months:表示start_date 之前或之后的月份数。

注意事项:

起始日期不是有效日期,则返回错误值 #VALUE!;months参数,可以是正也可以是负。月数为正,表示未来日期;月数为负表示过去日期。

如果不是整数,将去尾取整;

29745370cdcc3d96906e5c47bb87c6fb.png
187d74f4b70d9fa363745da60d506098.png

四.Workday函数(常用)

此部分已经在之前讲过了。所以就简单陈述一下。

Workday用于从起始日期开始的多少天对应的工作日,排除了周末和专门的节假日。

功能:返回某天后的日期。

语法:Workday(start_date,days, [holidays])

公式:=Workday(起始日期,工作天数,[需要排除的节假日日期])

153945b9e4aab453131dbf5ba6015d00.png

参数:

Start_date:必需。代表开始日期。

Days:必需。代表start_date 之前或之后不含周末及节假日的天数。

注意:Days 为正值时,生成未来日期;为负值时,生成过去日期。

Holidays:可选。是一个可选列表,包含需要从工作日历中排除的一个或多个日期。

(1)比较: Networkdays & Workday

a .与 Networkdays 的参数一致,

即:Workday函数也是只计算工作日,计算的时候会自动去掉周末。

b .与 Networkdays 的区别:

Networkdays的结果是两个日期之间的天数;

Workday的结果是一个具体的的日期。

(2)实例

703052b07f96039379b099a2a3e6ef5c.png
0e30600f59ca875ae54c3c83a174f005.png

五.Workday.intl函数

Workday.intl函数是Workday函数的延伸,比Workday只多了一个自定义参数weekend。它可以完成Workday函数所能完成的所有计算。

不同于Workday函数,Workday.intl函数可以更为灵活地设置工作日安排,不用再拘泥于周六、周日双休这种工作安排。

功能:返回指定的若干个工作日之前或之后的日期的序列号(使用自定义周末参数)。

周末参数指明周末有几天以及是哪几天。 周末和任何指定为假期的日期不被视为工作日。

语法:Workday.intl(start_date,days,[weekend],[holidays])

公式:=Workday.intl (起始日期,指定几个工作日,[自定义周末的规则],[要排除的节假日])

b81e830f184a0767561648062166c4ae.png

参数:

Start_date :必需。 开始日期(将被截尾取整)。

Days : 必需。 Start_date 之前或之后的工作日的天数。

正值表示未来日期;负值表示过去日期;零值表示开始日期。 Day-offset 将被截尾取整。

Weekend : 可选。 表示一周中哪些天是工作日和哪些天是非工作日。

Weekend 是一个用于指定周末日的周末数字或字符串。(跟Networkdays.int函数的第三个Weekend函数用法一样)

① weekend是指定周末日的周末数字:(如下图)

1-7:代表一周哪两天休息

11-17:代表一周仅哪一天休息

f2c91f7edf11c3310fff0020e541af81.png

②weekend也可以是周末字符串值。

长度为七个字符,并且字符串中的每个字符表示一周中的一天(从星期一开始)。

1 表示非工作日,0 表示工作日。 在字符串中仅允许使用字符 1 和 0。使用 1111111 将始终返回 0。

7f94e47ee4cfa28fc3205f8f75e0d707.png

>>>自定义工作

4526750b879daa58c4d95df77e796dc3.png

Holidays :可选。代表要被排除的非工作日; 一组可选的日期,表示要从工作日日历中排除的一个或 多个日期。

holidays 应是一个包含相关日期的单元格区域,或者是一个由表示这些日期的序列值构成的数组常量。 holidays 中的日期或序列值的顺序可以是任意的。

注意事项:

(1)请确保start_Date是一个工作日,否则计算结果会存在出入。

(2)如果days输入的不是一个整型的数字,那么它会被进行截尾取整;

days输入一个负数,从而实现根据已知结束日期,计算出开始日期。

(3)weekend参数以字符串形式表达时,必须至少有一个0,也就是说这个字符串不能是“1111111”。


总结:

当相隔的是固定的天数时,求结束日期,用Date函数或直接相加减法。

当相隔的是固定的年数,月数时,求结束日期,用Date函数或Edate函数。

当相隔的是工作日天数,求结束日期,用Workday或Workday.intl函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值