一、简介:
yearweek(date,mode)函数是用于获取日期为date的这一天在所属年份中的周数,取值区间为0~53或1~53,而mode则指定了那一天开始算作这一年的第一周
二、参数介绍:
date:日期类型的数据
mode:备选值为0-7
- 0:把周日当作每周的第一天,一年有54周,yearweek取值范围为0~53,并且把元旦这一天所在的这一周当作新年第一周
- 1:把周一当作每周的第一天,一年有54周,yearweek取值范围为0~53,并且把元旦当天+3天所在的这一周当作新年第一周
- 2:把周日当作每周的第一天,一年有53周,yearweek取值范围为1~53,并且把元旦这一天所在的这一周当作新年第一周
- 3:把周一当作每周的第一天,一年有53周,yearweek取值范围为1~53,并且把元旦当天+3天所在的这一周当作新年第一周
- 4:把周日当作每周的第一天,一年有54周,yearweek取值范围为0~53,并且把元旦当天+3天所在的这一周当作新年第一周
- 5:把周一当作每周的第一天,一年有54周,yearweek取值范围为0~53,并且把元旦这一天所在的这一周当作新年第一周
- 6:把周日当作每周的第一天,一年有53周,yearweek取值范围为1~53,并且把元旦当天+3天所在的这一周当作新年第一周
- 7:把周一当作每周的第一天,一年有53周,yearweek取值范围为1~53,并且把元旦这一天所在的这一周当作新年第一周
看着很复杂,简单讲的话就是,mode的默认值为0,如果想把周一当作每周的第一天,将mode设置为1就行
三、使用场景:
当需要查询数据库中某个日期字段处在当前周/上一周/下一周中的所有数据,就可以采用:
YEARWEEK(date_format('日期字段', '%Y-%m-%d'),1) = YEARWEEK(now(),1)
这样的的查询条件,不过需要注意的是,等号左右两边的YEARWEEK函数需要声明相同的mode值,否则会出现查询结果对不上号的是情况