code: func (b *builtinLastDaySig) evalTime(row chunk.Row) (types.Time, bool, error) {
  	arg, isNull, err := b.args[0].EvalTime(b.ctx, row)
  	if isNull || err != nil {
  		return types.Time{}, true, handleInvalidTimeError(b.ctx, err)
  	}
  	tm := arg.Time
  	var day int
  	year, month := tm.Year(), tm.Month()
  	if month == 0 {
  		return types.Time{}, true, handleInvalidTimeError(b.ctx, types.ErrIncorrectDatetimeValue.GenWithStackByArgs(arg.String()))
  	}
  	day = types.GetLastDay(year, month)
  	ret := types.Time{
  		Time: types.FromDate(year, month, day, 0, 0, 0, 0),
  		Type: mysql.TypeDate,
  		Fsp:  types.DefaultFsp,
  	}
  	return ret, false, nil
  }
docs: // evalTime evals a builtinLastDaySig.
  // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_last-day