diff --git a/datafusion-physical-expr/src/datetime_expressions.rs b/datafusion-physical-expr/src/datetime_expressions.rs index 0dfd260d498e..d4991d6ef594 100644 --- a/datafusion-physical-expr/src/datetime_expressions.rs +++ b/datafusion-physical-expr/src/datetime_expressions.rs @@ -351,6 +351,8 @@ pub fn date_part(args: &[ColumnarValue]) -> Result { let arr = match date_part.to_lowercase().as_str() { "hour" => extract_date_part!(array, temporal::hour), "year" => extract_date_part!(array, temporal::year), + "minute" => extract_date_part!(array, temporal::minute), + "second" => extract_date_part!(array, temporal::second), _ => Err(DataFusionError::Execution(format!( "Date part '{}' not supported", date_part diff --git a/datafusion/tests/sql/expr.rs b/datafusion/tests/sql/expr.rs index d6ab1a5f6838..ef8a29c97caa 100644 --- a/datafusion/tests/sql/expr.rs +++ b/datafusion/tests/sql/expr.rs @@ -725,6 +725,22 @@ async fn test_extract_date_part() -> Result<()> { "EXTRACT(year FROM to_timestamp('2020-09-08T12:00:00+00:00'))", "2020" ); + test_expression!( + "EXTRACT(minute FROM to_timestamp('2020-09-08T12:12:00+00:00'))", + "12" + ); + test_expression!( + "date_part('minute', to_timestamp('2020-09-08T12:12:00+00:00'))", + "12" + ); + test_expression!( + "EXTRACT(second FROM to_timestamp('2020-09-08T12:00:12+00:00'))", + "12" + ); + test_expression!( + "date_part('second', to_timestamp('2020-09-08T12:00:12+00:00'))", + "12" + ); Ok(()) }