| 226 | |
| 227 | template <bool is_add, typename AnyIntVal, bool keep_last_day> |
| 228 | DateVal DateFunctions::AddSubMonths(FunctionContext* context, const DateVal& d_val, |
| 229 | const AnyIntVal& num_months) { |
| 230 | if (d_val.is_null || num_months.is_null) return DateVal::null(); |
| 231 | |
| 232 | const DateValue dv = DateValue::FromDateVal(d_val).AddMonths( |
| 233 | is_add ? num_months.val : -num_months.val, keep_last_day); |
| 234 | return dv.ToDateVal(); |
| 235 | } |
| 236 | |
| 237 | template <bool is_add, typename AnyIntVal> |
| 238 | DateVal DateFunctions::AddSubDays(FunctionContext* context, const DateVal& d_val, |