#一周的开始时间和结束时间
select DATE_FORMAT( subdate('2020-04-04 23:00:01',WEEKDAY('2020-04-04 23:00:01')),'%Y-%m-%d 00:00:00'),
DATE_FORMAT( subdate('2020-04-04 23:00:01',WEEKDAY('2020-04-04 23:00:01')-6),'%Y-%m-%d 23:59:59')
#一月的开始时间和结束时间
SELECT DATE_FORMAT(DATE_SUB('2020-04-08 23:00:01',INTERVAL (DAYOFMONTH('2020-04-08 23:00:01')-1) day),'%Y-%m-%d 00:00:00'),
DATE_FORMAT( LAST_DAY('2020-04-04 23:00:01'),'%Y-%m-%d 23:59:59');
#一年的开始时间和结束时间
SELECT DATE_FORMAT('2020-04-04 23:00:01', '%Y-01-01 00:00:00'), DATE_FORMAT('2020-04-04 23:00:01', '%Y-12-31 23:59:59');
SELECT DATE_FORMAT(now(), '%Y-01-01 00:00:00'), DATE_FORMAT(now(), '%Y-12-31 23:59:59');
##一年的结束时间不是太对因为有的年份没有12月31,但你是用于查询条件的话完全ok的
#如果想获取本周,本月,本年的开始时间和结束时间把 时间 '2020-04-04 23:00:01' 换成now() 就行了
推荐看MySQL日期时间函数大全 https://blog.csdn.net/zhaofuqiangmycomm/article/details/105391616
知其然,也要知其所以然,想查别的日期根据函数组合一下也就能出来了