查询一段时间内过生日的员工,是一个日期的比较的过程,所以只要在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 whereright(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”
运行结果:
思路是利用到期时间和未来的10天比较,如果小于未来十天最大的日期,说明是10天内要到期了。因为你的时间格式是时间戳,所以要转换下格式select * from dqtx where DATE_FORMAT(riqi,'%Y-%m-%d')<=DATE_add(CURDATE(),INTERVAL 10 day)
select name, birthday,from person
where date_format(birthday,'%m%d') between
date_format(now(),'%m%d')
and
date_format(date_add(now(), interval 30 day),'%m%d')
希望你看懂,其实比较的就是月和日。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)