code: func (b *builtinTimeSig) evalDuration(row chunk.Row) (res types.Duration, isNull bool, err error) {
  	expr, isNull, err := b.args[0].EvalString(b.ctx, row)
  	if isNull || err != nil {
  		return res, isNull, err
  	}
  
  	fsp := 0
  	if idx := strings.Index(expr, "."); idx != -1 {
  		fsp = len(expr) - idx - 1
  	}
  
  	if fsp, err = types.CheckFsp(fsp); err != nil {
  		return res, isNull, err
  	}
  
  	sc := b.ctx.GetSessionVars().StmtCtx
  	res, err = types.ParseDuration(sc, expr, fsp)
  	if types.ErrTruncatedWrongVal.Equal(err) {
  		err = sc.HandleTruncate(err)
  	}
  	return res, isNull, err
  }
docs: // evalDuration evals a builtinTimeSig.
  // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_time.