伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

MySQL查询:EHR中某时间范围过生日的员工

来源:本站原创 浏览:101次 时间:2022-11-06

需求背景

1、要求在用户在查询界面,可以查询自定义范围期限的员工生日。

2、页面渲染的时候,默认出现近七天内要过生日的人。并发邮件提醒(发邮件提醒不在这里完成,是在其他模块,这里只描述如何查询生日的人)。

如下图案例(组件使用Element-UI):

一个是起始时间,一个是终止时间。

需求分析

生日的查询好实现,员工表中,其中有员工表的生日提醒。

这里需要注意的几个点:

1、查询生日的时候,需拆分一下时间,需要把年份去掉,只留下月日。

2、跨年查询。


第2点要是搁在普通的时间,用到的很少,现在是跨年,硬性需求。而且,生日查询嘛,一般查询的都是近期的,没有查询跨度半年或者是好几个月的,这样不太符合一般性的需求。


具体实现

跨年查询我有两种方法,我再Mybatis中,用的是第一种。

方法一:前端往后端传时间的时候,时间取值转换成字符串,只截取月日四个数字,比如'1225',然后传给后端。后端拿到,在MySQL语句处理的时候,我拿到员工的生日,一样截取月日。

这样就能匹配起来。单纯这样子,还无法对跨年进行处理。


方法二:取出员工的生日,比较与现在输入查询的年份【用户输入的不一定是今年哦~所以,不能取现在的时间】的[差距多少年],也就是算了算他多少岁,然后把他生日的年份加上+[[差距多少年]],就是所选查询日期的起始年份。

例如,经过方法二的查询,本来张三的生日是1990-12-25,查询的时候,加入输入的起始时间是:【2018-09-08】,他的生日会变成【2018-12-25】。

同样,查询第二个时间点,终止时间,也这样去写,可以解决跨年的问题。


那么方法一中的跨年问题如何去解决呢?我没有去判断时间点,是不是终止的时间日期要比起始日期要小之类的。


MySQL语句

这是在navicat中执行的语句,使用union all链接结果。这个其实看出的不明显,第二张图我放上MyBatis映射文件中的代码。


在查询起始时间大于终止时间的时候,第一个select,查询的结果集是空,这里跨年处理我是将时间节点截断的。

BETWEEN #{data.startDataBirthdayPoint} AND '1231'
BETWEEN '0101' AND #{data.endDataBirthdayPoint}

用这两个来处理跨年。不管用户选择是哪一年,都好使。


下面是第二种方法的代码:

这个方式,单纯的查询,能够实现我想要的需求,我放到MyBatis映射文件去查询的时候,报错,具体的原因我没有去细查。

如果我解决了MyBatis映射文件的错误,我似乎也不会选择这个方法,其中里面的方法太多,假如人数很多的话,铁定会影响效率。

我推荐第一种,简单,有效。


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net