code: func (b *builtinDateFormatSig) evalString(row chunk.Row) (string, bool, error) {
  	t, isNull, err := b.args[0].EvalTime(b.ctx, row)
  	if isNull || err != nil {
  		return "", isNull, handleInvalidTimeError(b.ctx, err)
  	}
  	if t.InvalidZero() {
  		return "", true, handleInvalidTimeError(b.ctx, types.ErrIncorrectDatetimeValue.GenWithStackByArgs(t.String()))
  	}
  	formatMask, isNull, err := b.args[1].EvalString(b.ctx, row)
  	if isNull || err != nil {
  		return "", isNull, err
  	}
  
  	res, err := t.DateFormat(formatMask)
  	return res, isNull, err
  }
docs: // evalString evals a builtinDateFormatSig.
  // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format