做人力资源的小伙伴,经常要录入员工信息。今天和大家分享,如何在员工身份证中,快速提取出生日期,自动生成年龄。
出生日期提取在C2单元格输入公式=Mid(B2,7,8)
Mid函数:用于截取出指定数量的字符
第一参数:B2,需要提取的字符串
第二参数:7,从字串符的第7位开始提取
第三参数:8,提取8位数
转换文本格式将提取出的出生日期转换为年月份的文本格式
在D2单元格输入公式=Text(C2,"0-00-00")
=Text(Mid(B2,7,8),"0-00-00")
Text函数:将数值转换为按指定数字格式表示的文本
计算年龄在E2单元格输入公式=Datedif(D2,Today(),"y")
=Datedif(Text(Mid(B2,7,8),"0-00-00"),Today(),"Y")
Datedif函数:计算两个日期之间的年\月\日间隔数
第一参数:Text(Mid(B2,7,8),"0-00-00"),起始日期
第二参数:Today(),返回当前日期,结束日期
第三参数:Y,计算两个日期的年数差
想了解更详细的课程讲解,可点击下方专栏了解详情↓↓↓
努力的人已经开始观看课程了,而你却一直犹豫要不要学习,7天过完,高下立见。
喜欢星座的朋友,肯定很关心某个人的生日对应的什么星座。经常玩数据库的朋友们,肯定会想着能不能用SQL语句实现这个过程,我们今天不妨尝试一番,看看能否找到合适的实现方法。
星座和日期的对应关系星座共有十二个,每个星座对应的名称和区间如下图所示:
由上图可知,每个星座的不考虑年份的日期区间是固定的,要知道生日对应的星座,只需要知道生日的年月落在那个区间即可。
我们需要判断的数据,主要是日期区间,最容易理解的方式,就是我们把开始的月份和天、以及结束的月份和天拆分成四个数据进行比对。这种方式太复杂了,关键是使用逻辑判断太过复杂。
我们转换思路,换一种方式,把开始日期和结束日期当成浮点数,月份是整数部分、天是小数部分,这样我们需要判断的数据就变成了两个,而且更容易使用逻辑判断对比。比如“双子座”,日期区间可转换成6.22和7.22,如果我们把生日的月份和天也转换成浮点数,就可以直接使用逻辑判断了。
对于12个星座的数据,我们也有两种方式处理,一种方式是创建一个表变量将12条数据预先存储起来,另一种方式则直接在select中使用case语句判断。
下面我们就两种方式分别实现。
使用表变量预存星座数据实现使用表变量先把星座数据预存起来,再将生日数据解析成对应格式,这里解析生日用到了format函数,语法如下:
format(@birthday,'MM.dd')
这样可以直接把生日的月份和天直接转换成浮点数字符串,在使用cast强制转换为浮点数。
完整脚本参考如下:
declare @data table( FSerial int identity(1,1) not null, FCNName nvarchar(30), FENName varchar(30), FBeg decimal(28,10), FEnd decimal(28,10));insert into @data(FCNName,FENName,FBeg,FEnd)values('白羊座','Aries',3.21,4.20),('金牛座','Taurus',4.21,5.20),('双子座','Gemini',5.21,6.21),('巨蟹座','Cancer',6.22,7.22),('狮子座','Leo',7.23,8.22),('座','Virgo',8.23,9.22),('天秤座','Libra',9.23,10.22),('天蝎座','Scorpio',10.23,11.21),('射手座','Sagittarius',11.22,12.21),('魔羯座','Capricorn',12.22,1.19),--特殊('水瓶座','Aquarius',1.20,2.18),('双鱼座','Pisces',2.19,3.20)declare @birthday smalldatetime;set @birthday='1988-8-8';declare @val decimal(28,10);set @val=cast(format(@birthday,'MM.dd') as decimal(28,10))select FCNNAME,FENNAMEfrom @datawhere (@val>=FBeg and @val<=FEnd) or (@val>=12.22 and @val<=12.31) or (@val>1.01 and @val<=1.19)
运行结果参考下图:
使用case方式实现使用Case ... When的方式实现就更加直接,根据生日解析出的浮点数,判断所落在的区间。这种方式没什么难度,我这里就不再赘述了。
希望对您有所帮助!
做人力资源的小伙伴,经常要录入员工信息。今天和大家分享,如何在员工身份证中,快速提取出生日期,自动生成年龄。
出生日期提取在C2单元格输入公式=Mid(B2,7,8)
Mid函数:用于截取出指定数量的字符
第一参数:B2,需要提取的字符串
第二参数:7,从字串符的第7位开始提取
第三参数:8,提取8位数
转换文本格式将提取出的出生日期转换为年月份的文本格式
在D2单元格输入公式=Text(C2,"0-00-00")
=Text(Mid(B2,7,8),"0-00-00")
Text函数:将数值转换为按指定数字格式表示的文本
计算年龄在E2单元格输入公式=Datedif(D2,Today(),"y")
=Datedif(Text(Mid(B2,7,8),"0-00-00"),Today(),"Y")
Datedif函数:计算两个日期之间的年\月\日间隔数
第一参数:Text(Mid(B2,7,8),"0-00-00"),起始日期
第二参数:Today(),返回当前日期,结束日期
第三参数:Y,计算两个日期的年数差
想了解更详细的课程讲解,可点击下方专栏了解详情↓↓↓
努力的人已经开始观看课程了,而你却一直犹豫要不要学习,7天过完,高下立见。
copyright © 2022 一生命运网 版权所有 辽ICP备2022007116号-4
法律声明:本站文章来自网友投稿,不代表本站观点,版权归原创者所有,如果侵犯了你的权益,请通知我们,我们会及时删除侵权内容!