code: func (b *builtinDateDiffSig) evalInt(row chunk.Row) (int64, bool, error) {
  	lhs, isNull, err := b.args[0].EvalTime(b.ctx, row)
  	if isNull || err != nil {
  		return 0, true, handleInvalidTimeError(b.ctx, err)
  	}
  	rhs, isNull, err := b.args[1].EvalTime(b.ctx, row)
  	if isNull || err != nil {
  		return 0, true, handleInvalidTimeError(b.ctx, err)
  	}
  	if invalidLHS, invalidRHS := lhs.InvalidZero(), rhs.InvalidZero(); invalidLHS || invalidRHS {
  		if invalidLHS {
  			err = handleInvalidTimeError(b.ctx, types.ErrIncorrectDatetimeValue.GenWithStackByArgs(lhs.String()))
  		}
  		if invalidRHS {
  			err = handleInvalidTimeError(b.ctx, types.ErrIncorrectDatetimeValue.GenWithStackByArgs(rhs.String()))
  		}
  		return 0, true, err
  	}
  	return int64(types.DateDiff(lhs.Time, rhs.Time)), false, nil
  }
docs: // evalInt evals a builtinDateDiffSig.
  // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_datediff