MySQL,怎么查询一段时间内过生日的员工

发布网友 发布时间:2022-04-25 13:08

我来回答

2个回答

懂视网 时间:2022-05-02 15:23

1. 不跨年

例如: 查询2017-01-01到2017-01-20之间过生日的会员  (假定今天是2017-01-01则这种也可以描述为20天内过生日的会员)

select * from user where DATE_FORMAT(birthday,‘%m-%d‘) between ‘01-01‘ and ‘01-20‘

2. 跨年

例如: 查询2017-12-27到2018-01-05之间过生日的会员, (假定今天是2017-12-27则这种也可以描述为10天内过生日的会员)

这里取今年的起始时间与今年的最后一天做为1组条件,2017-12-27到2017-12-31; 取下年的第一天到下年的结束做为1组条件:2018-01-01到2018-01-05

select * from user where (DATE_FORMAT(birthday,‘%m-%d‘) between ‘12-27‘ and ‘12-31‘ OR DATE_FORMAT(birthday,‘%m-%d‘) between ‘01-01‘ and ‘01-05‘ )

 

分析了两种查询生日的情况, 还有一种情况是闰年生日的情况,留到下次再说.

抛砖引玉,大家有好的方案欢迎交流. 

MySql查询生日的两种方式

标签:str   where   use   mysql查询   post   需要   条件   log   方案   

热心网友 时间:2022-05-02 12:31

查询一段时间内过生日的员工,是一个日期的比较的过程,所以只要在where 子句添加时间的筛选即可。

一、语句会用到convert()函数

CONVERT() 函数功能 :

1、把日期转换为新数据类型的通用函数。

2、用不同的格式显示日期/时间数据。

语法:CONVERT(data_type(length),data_to_be_converted,style)

data_type(length) 规定目标数据类型(带有可选的长度)。data_to_be_converted 含有需要转换的值。style 规定日期/时间的输出格式。

可以使用的 style 值:

二、例表格:ygsrb,表结构如下

三、例如查询4月份生日的员工,也就是csrq的日期大等于4月1日,小于5月1日,那么SQL语句就可以这样写:

select * from ygsrb where
right(convert(char(10),csrq,112),4) >= '0401' and
right(convert(char(10),csrq,112),4) <  '0501' ;

四、语句解析:

convert(char(10),csrq,112):将日期转换成 ‘yyyymmdd’格式

right(convert(char(10),csrq,112),4):截取转换后的时间右边4位“mmdd”

运行结果:

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com