简道云函数举:起止日期计算工作年龄(生日计算年龄).docxVIP

简道云函数举:起止日期计算工作年龄(生日计算年龄).docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
简道云函数举:起止日期计算工作年龄(生日计算年龄)

简道云函数举例:起止日期计算工作年龄(生日计算年龄) 这个例子看起来非常简单,比如我是2000年入职,今年2015年,得出的结果应该是15年。可能会有用户认为,用YEAR()函数取两个年份,相减不就好了吗。可是我们要考虑到2015.1.1-2015.10.1这样的情况,只有10个月,不满整年,不能算作工龄。当然年龄也是一样,没有到周岁的时候,是不能算整岁的。因此用年份相减的算法我们予以否定。 比较相似的是,如果我计算天数呢,算出两个时间的天数差,然后除以365,再取整,不就可以得到年份了吗。我们来做一做这个函数: 很简单,DAYS()函数取两个时间的间隔天数,当然要先用DATE()变成时间对象,然后除以365天,用INT()函数取整即可。看验证: 同理,机智的朋友们也可能直接从时间戳上入手,直接算出两个时间戳的差,然后用毫秒换算取整。一样的,我们来看下: 简单粗暴的公式,结果肯定也不出意料: 到了这里,细心的朋友会发现,不管用上面的哪一种算法,都不可避免的不精确。365天只是一个年份的大约值,也有可能是366天。虽然影响结果的可能性比较低,但一些要求高的用户还是觉得不好。下面的终极解法,涉及到时间戳本身的定义,比较难理解,这里不要求掌握,有条件的朋友可研究看看。 可能用到的函数: DATE() YEAR() MONTH() DAY() 是的没错,就用这4个函数,精确的计算整年,精确度为毫秒(时间戳的单位)。这里要清楚一个概念,时间戳的0值,是1970年1月1日0:00:00。 文章的开头笔者说,用年份相减的办法算时间差,我们这里考虑把月份也相减,日期也相减,然后用DATE()把年月日合成时间对象。 假设一个情况,起始时间,2015年1月1日;截止时间,2015年10月1日,这两个相减,得到的应该是DATE(0,10,0)。这里值得一提的是,0日可以看成上个月的最后一天,月份对应减去1即可。那么0年呢?我们知道公元1年和公元前1年之间是没有“0年”这个概念的。跟EXCEL一样,0-99表示1900年-1999年,从100开始,YEAR(DATE(100,1,1))得到的时间值就是公元100年,到后面都不会再有特殊。所以如果前后两个年份相差5年,用YEAR取值得到的应该是1905年,是完全不对的。 这里动一下脑子就简单啦。我这样写函数: 年份:YEAR(DATE(终止时间))-YEAR(DATE(初始时间))+100 月份:MONTH(DATE(终止时间))-MONTH(DATE(初始时间))+1 日期:DAY(DATE(终止时间))-DAY(DATE(初始时间))+2 这里我想大部分用户朋友都不明白了,年份+100算是理解了,因为终止年份-初始年份如果小于100,得到的值是1900-1999年。这里加上100可以在最后减去。那么为什么月份要+1呢,日期为什么+2呢? 我们设想一下:2015年10月1日-2016年9月30日,这里应该是一年整的。如果按照结尾不加1和2来计算,得到的应该是DATE(101,-1,-1),自动借位,得到的应该是“100年11月30日”,年份-100,最后得到11个月零30天。误差是来自哪里,我们知道一年有12个月,如果两个时间差是0月,实际的时间里不存在0月这个情况,自动向年借1位,年份-1,月份变为12月,天数同理。因此为了避免这样的借位,我们给月份差和天数差各+1,让原本0-11的12进制变为1-12的12进制。最后考虑整年一般是2015年10月1日-2016年9月30日这种,而不是10月1日-次年10月1日,所以最后的天数再加1,这样我们综合公式为: YEAR(DATE(YEAR(DATE(终止时间))-YEAR(DATE(初始时间))+100,MONTH(DATE(终止时间))-MONTH(DATE(初始时间))+1,DAY(DATE(终止时间))-DAY(DATE(初始时间))+2))-100 写进公式: 我们输入几个日期验算一下: 区别如下: 本文由:简道云--在线数据管理工具提供。

文档评论(0)

shaofang00 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档