diff --git a/datafusion/physical-expr/src/datetime_expressions.rs b/datafusion/physical-expr/src/datetime_expressions.rs index d21d89c19d2eb..544b43e17eed2 100644 --- a/datafusion/physical-expr/src/datetime_expressions.rs +++ b/datafusion/physical-expr/src/datetime_expressions.rs @@ -581,7 +581,7 @@ fn _date_trunc_coarse_without_tz( /// account that some granularities are not uniform durations of time /// (e.g. months are not always the same lengths, leap seconds, etc) fn date_trunc_coarse(granularity: &str, value: i64, tz: Option) -> Result { - let value = match tz { + let value: Option = match tz { Some(tz) => { // Use chrono DateTime to clear the various fields because need to clear per timezone, // and NaiveDateTime (ISO 8601) has no concept of timezones @@ -600,6 +600,14 @@ fn date_trunc_coarse(granularity: &str, value: i64, tz: Option) -> Result() + .with_timezone_opt("Europe/Berlin".into()); + let result = date_trunc(&[ + ColumnarValue::Scalar(ScalarValue::from(*granularity)), + ColumnarValue::Array(Arc::new(input)), + ]); + assert!(result.is_err()); + + assert!(matches!( + result.unwrap_err(), + DataFusionError::NotImplemented(_) + )); + }); + } + #[test] fn test_date_bin_single() { use chrono::Duration;