MySQL中yearweek函数的使用

158 阅读1分钟

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:周二为一周的第一天
  • 。。。。

到这里问题也算是解决了。归根到底还是对这个函数的使用没有掌握。特此记录。