code: func (b *builtinSubDateIntStringSig) evalTime(row chunk.Row) (types.Time, bool, error) {
  	unit, isNull, err := b.args[2].EvalString(b.ctx, row)
  	if isNull || err != nil {
  		return types.Time{}, true, err
  	}
  
  	date, isNull, err := b.getDateFromInt(b.ctx, b.args, row, unit)
  	if isNull || err != nil {
  		return types.Time{}, true, err
  	}
  
  	interval, isNull, err := b.getIntervalFromString(b.ctx, b.args, row, unit)
  	if isNull || err != nil {
  		return types.Time{}, true, err
  	}
  
  	result, isNull, err := b.sub(b.ctx, date, interval, unit)
  	return result, isNull || err != nil, err
  }
docs: // evalTime evals SUBDATE(date,INTERVAL expr unit).
  // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_subdate