diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/DateTimeExtractAndTransform.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/DateTimeExtractAndTransform.java index b3f356a0a36e58..f59ae96fd01011 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/DateTimeExtractAndTransform.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/DateTimeExtractAndTransform.java @@ -1292,6 +1292,20 @@ public static Expression nextDay(DateV2Literal date, StringLiteral day) { return date.plusDays(daysToAdd); } + /** + * date arithmetic function previous_day + */ + @ExecFunction(name = "previous_day") + public static Expression previousDay(DateV2Literal date, StringLiteral day) { + int dayOfWeek = getDayOfWeek(day.getValue()); + if (dayOfWeek == 0) { + throw new RuntimeException("Invalid day of week: " + day.getValue()); + } + int daysToSub = (date.getDayOfWeek() - dayOfWeek + 7) % 7; + daysToSub = daysToSub == 0 ? 7 : daysToSub; + return date.plusDays(-daysToSub); + } + /** * date transform function sec_to_time */