数据:
思路:可以通过将同学们的Sage转化为今年同一时间 然后判断此时间是否处于本周
先来认识几个函数:
select weekday(now()); #周一是0 sql中周一到周日 分别对应0-6
-- 0
select date_sub(now(), INTERVAL weekday(now()) day); # 表示本周周一时间
-- 2024-07-15 19:17:53
select date_add(now(), INTERVAL 6 - weekday(now()) day); #表示本周周日时间
-- 2024-07-21 19:18:30
select date_add(now(),interval 7 - weekday(now())day); #表示下周周一时间
-- 2024-07-22 19:28:15
select date_add(now(),interval 13 - weekday(now())day); #表示下周周日时间
-- 2024-07-28 19:28:42
select concat(year(now()),'-',month(now()),'-',day(now())); #时间拼接
-- 2024-7-15
select date(concat(year(now()), '-', month(now()), '-', day(now()))#拼接后注意转换类型
-- 2024-7-15
统计本周过生日的同学
select *
from student
where date(concat(year(now()), '-', month(Sage), '-', day(Sage)))
between date_sub(now(), interval weekday(now()) day)
and date_add(now(), interval 6 - weekday(now()) day) ;
查询结果:
统计下周过生日的同学
select * from student
where date(concat(year(now()), '-', month(Sage), '-', day(Sage)))
between date_add(now(), interval 7-weekday(now()) day)
and date_add(now(), interval 13 - weekday(now()) day) ;
查询结果: