查询一段时间内过生日的员工,是一个日期的比较的过程,所以只要在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”
运行结果:
做一个学校项目的时候 要根据上中晚查询 最后用的是
date_format(t1.record_time, '%H:%i:%s')
SELECT t2.class_name,t1.class_no,t1.course_id,t1.course_name,t1.id,t1.pic_url,t1.record_time,t1.sign_day,t1.status,t1.student_name,t1.student_no FROM t_e_sign t1 LEFT JOIN t_e_sys_org t2 ON t2.org_code = t1.class_no WHERE IF (:studentName is not null, t1.student_name LIKE CONCAT('%',:studentName,'%') , 1 = 1) and IF (:className is not null, t2.class_name LIKE CONCAT('%',:className,'%') , 1 = 1) and IF (:startTime is not null, date_format(t1.record_time, '%Y-%m-%d') >=:startTime , 1 = 1) and IF (:endTime is not null, date_format(t1.record_time, '%Y-%m-%d') <=:endTime , 1 = 1) and IF (:startdetailTime is not null, date_format(t1.record_time, '%H:%i:%s') >=:startdetailTime , 1 = 1) and IF (:enddetailTime is not null, date_format(t1.record_time, '%H:%i:%s') <=:enddetailTime , 1 = 1) ORDER BY ?#{#pageable}",
整个语句也写下吧
select 歌手,day(出生日期) as 生日from 表名 awhere day(出生日期)in
(select day(出生日期)from表名 b)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)