diff --git a/pkg/sql/plan2/build_function.go b/pkg/sql/plan2/build_function.go index 416a5866bf2265f4d534d28238005e50ca6c20c0..e90c70f185feb00ff4dcc72f276a1a88d82db1b5 100644 --- a/pkg/sql/plan2/build_function.go +++ b/pkg/sql/plan2/build_function.go @@ -241,6 +241,20 @@ func resetIntervalFunctionExprs(dateExpr *Expr, intervalExpr *Expr) ([]*Expr, er return nil, err } + // rewrite "date '2020-10-10' - interval 1 Hour" to date_add(datetime, 1, hour) + if dateExpr.Typ.Id == plan.Type_DATE { + switch returnType { + case types.Day, types.Week, types.Month, types.Quarter, types.Year: + default: + dateExpr, err = appendCastExpr(dateExpr, &plan.Type{ + Id: plan.Type_DATETIME, + Size: 8, + }) + if err != nil { + return nil, err + } + } + } return []*Expr{ dateExpr, {