code: func (b *builtinYearWeekWithModeSig) evalInt(row chunk.Row) (int64, bool, error) {
  	date, isNull, err := b.args[0].EvalTime(b.ctx, row)
  	if isNull || err != nil {
  		return 0, isNull, handleInvalidTimeError(b.ctx, err)
  	}
  	if date.IsZero() {
  		return 0, true, handleInvalidTimeError(b.ctx, types.ErrIncorrectDatetimeValue.GenWithStackByArgs(date.String()))
  	}
  
  	mode, isNull, err := b.args[1].EvalInt(b.ctx, row)
  	if err != nil {
  		return 0, true, err
  	}
  	if isNull {
  		mode = 0
  	}
  
  	year, week := date.Time.YearWeek(int(mode))
  	result := int64(week + year*100)
  	if result < 0 {
  		return int64(math.MaxUint32), false, nil
  	}
  	return result, false, nil
  }
docs: // evalInt evals YEARWEEK(date,mode).
  // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_yearweek