code: func (b *builtinTimeFormatSig) evalString(row chunk.Row) (string, bool, error) {
  	dur, isNull, err := b.args[0].EvalDuration(b.ctx, row)
  	// if err != nil, then dur is ZeroDuration, outputs 00:00:00 in this case which follows the behavior of mysql.
  	if err != nil {
  		logutil.Logger(context.Background()).Warn("time_format.args[0].EvalDuration failed", zap.Error(err))
  	}
  	if isNull {
  		return "", isNull, err
  	}
  	formatMask, isNull, err := b.args[1].EvalString(b.ctx, row)
  	if err != nil || isNull {
  		return "", isNull, err
  	}
  	res, err := b.formatTime(b.ctx, dur, formatMask)
  	return res, isNull, err
  }
docs: // evalString evals a builtinTimeFormatSig.
  // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_time-format