code: func builtinNow(args []types.Datum, ctx context.Context) (d types.Datum, err error) {
  	// TODO: if NOW is used in stored function or trigger, NOW will return the beginning time
  	// of the execution.
  	fsp := 0
  	sc := ctx.GetSessionVars().StmtCtx
  	if len(args) == 1 && !args[0].IsNull() {
  		if fsp, err = checkFsp(sc, args[0]); err != nil {
  			d.SetNull()
  			return d, errors.Trace(err)
  		}
  	}
  
  	tr, err := types.RoundFrac(time.Now(), int(fsp))
  	if err != nil {
  		d.SetNull()
  		return d, errors.Trace(err)
  	}
  
  	t := types.Time{
  		Time: types.FromGoTime(tr),
  		Type: mysql.TypeDatetime,
  		// set unspecified for later round
  		Fsp: fsp,
  	}
  
  	d.SetMysqlTime(t)
  	return d, nil
  }
docs: // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_now