diff --git a/datafusion/functions/src/datetime/date_part.rs b/datafusion/functions/src/datetime/date_part.rs index 3c405d388bcab..80f6bc0f66a70 100644 --- a/datafusion/functions/src/datetime/date_part.rs +++ b/datafusion/functions/src/datetime/date_part.rs @@ -240,16 +240,8 @@ impl ScalarUDFImpl for DatePartFunc { "doy" => date_part(array.as_ref(), DatePart::DayOfYear)?, "dow" => date_part(array.as_ref(), DatePart::DayOfWeekSunday0)?, "isodow" => { - // Postgres `isodow` is 1..=7 with Mon=1. Arrow's - // `DayOfWeekMonday0` returns 0..=6 with Mon=0; shift by - // +1 to match Postgres. TODO: switch to a future - // `DatePart::DayOfWeekMonday1` upstream variant once it - // exists, so this kernel-then-add becomes a single call. - let zero_based = - date_part(array.as_ref(), DatePart::DayOfWeekMonday0)?; - let int_arr = as_int32_array(&zero_based)?; - let one_based: Int32Array = int_arr.unary(|v| v + 1); - Arc::new(one_based) as ArrayRef + // Postgres `isodow` is 1..=7 with Mon=1 + date_part(array.as_ref(), DatePart::DayOfWeekMonday1)? } "epoch" => epoch(array.as_ref())?, _ => return exec_err!("Date part '{part}' not supported"),