当前位置:首页 > 八字命理

出生日期查询生日是九月的SQL语句 农历公历生日转换器

发布时间:2024-06-23 02:26:35作者:及時行樂来源:网友分享

出生日期查询生日是九月的SQL语句 农历公历生日转换器

本文目录一览:

2分钟学会3个函数,快速从身份证中提取出生日期、年龄

做人力资源的小伙伴,经常要录入员工信息。今天和大家分享,如何在员工身份证中,快速提取出生日期,自动生成年龄。

出生日期提取

在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根据生日获取星座?

喜欢星座的朋友,肯定很关心某个人的生日对应的什么星座。经常玩数据库的朋友们,肯定会想着能不能用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的方式实现就更加直接,根据生日解析出的浮点数,判断所落在的区间。这种方式没什么难度,我这里就不再赘述了。

希望对您有所帮助!

2分钟学会3个函数,快速从身份证中提取出生日期、年龄

做人力资源的小伙伴,经常要录入员工信息。今天和大家分享,如何在员工身份证中,快速提取出生日期,自动生成年龄。

出生日期提取

在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天过完,高下立见。