MySQL中yearweek函数的使用
起因
项目中有一个定时任务,用于统计每周登录用户的数量,于是就用了如下的sql语句。
SELECT COUNT(DISTINCT user_id) AS weekly_active_users
FROM mp_user
WHERE YEARWEEK(login_date) = YEARWEEK(CURDATE());
逻辑很简单,属实看不出来有鸡毛问题。后面静下来仔细想想如果有问题,只可能是yearweek这个函数的问题。于是查了一下这个方法的定义。
方法定义
YEARWEEK(date, mode)
故名思意,yearweek用于将计算日期位于这一年中的第几周。注意由于各个地区对每周第一天的定义是不同的,所以这个函数是有一个参数用来指定每周的周几为一周的第一天。
mode用于指定周几为一周的第一天
- 0或者7: 周日为一周的第一天
- 1:周一为一周的第一天
- 2:周二为一周的第一天
- 。。。。
到这里问题也算是解决了。归根到底还是对这个函数的使用没有掌握。特此记录。