code: func (c *Constant) EvalTime(ctx sessionctx.Context, _ chunk.Row) (val types.Time, isNull bool, err error) {
  	if c.DeferredExpr != nil {
  		dt, err := c.DeferredExpr.Eval(chunk.Row{})
  		if err != nil {
  			return types.Time{}, true, err
  		}
  		if dt.IsNull() {
  			return types.Time{}, true, nil
  		}
  		val, err := dt.ToString()
  		if err != nil {
  			return types.Time{}, true, err
  		}
  		tim, err := types.ParseDatetime(ctx.GetSessionVars().StmtCtx, val)
  		if err != nil {
  			return types.Time{}, true, err
  		}
  		c.Value.SetMysqlTime(tim)
  	} else {
  		if c.GetType().Tp == mysql.TypeNull || c.Value.IsNull() {
  			return types.Time{}, true, nil
  		}
  	}
  	return c.Value.GetMysqlTime(), false, nil
  }
docs: // EvalTime returns DATE/DATETIME/TIMESTAMP representation of Constant.