记录一下mysql比较常用的时间筛选函数,基本上以下方法可解决90%以上的mysql时间筛选了
SELECT NOW(),CURDATE(),CURTIME()
当年、当月、当天
SELECT date_format(now(),'%Y'),date_format(now(),'%Y-%m'),date_format(now(),'%Y-%m-%d')
例如:
当年
SELECT * FROM 表 WHERE date_format(时间,'%Y') = date_format(now(),'%Y')
当月
SELECT * FROM 表 WHERE date_format(时间,'%Y-%m') = date_format(now(),'%Y-%m')
当天
SELECT * FROM 表 WHERE date_format(时间,'%Y-%m-%d') = date_format(now(),'%Y-%m-%d')
也可以用date_sub函数
前天
date_sub(now(),interval 1 day)
今天
date_sub(now(),interval 0 day)
明天
date_sub(now(),interval -1 day)
select NOW(),date_sub(now(),interval 1 day),date_sub(now(),interval 0 day),date_sub(now(),interval -1 day)
YEARWEEK函数
需要特别注意YEARWEEK(date[,mode]) mode设置1,才是从周一开始
当周 从周日开始
SELECT * FROM 表 where YEARWEEK(date_format(时间,'%Y-%m-%d')) = YEARWEEK(now());
上周 从周日开始
SELECT * FROM 表 where YEARWEEK(date_format(时间,'%Y-%m-%d')) = YEARWEEK(now())-1;
当周 从周一开始
SELECT * FROM 表 where YEARWEEK(date_format(时间,'%Y-%m-%d'),1) = YEARWEEK(now(),1);
上周 从周一开始
SELECT * FROM 表 where YEARWEEK(date_format(时间,'%Y-%m-%d'),1) = YEARWEEK(now(),1)-1;