diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/V2ScanRelationPushDown.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/V2ScanRelationPushDown.scala index 23b2647b62a1..5f7e86cab524 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/V2ScanRelationPushDown.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/V2ScanRelationPushDown.scala @@ -328,7 +328,12 @@ object V2ScanRelationPushDown extends Rule[LogicalPlan] with PredicateHelper { if (expression.dataType == expectedDataType) { expression } else { - Cast(expression, expectedDataType) + val cast = Cast(expression, expectedDataType) + if (cast.timeZoneId.isEmpty && cast.needsTimeZone) { + cast.withTimeZone(conf.sessionLocalTimeZone) + } else { + cast + } } def buildScanWithPushedAggregate(plan: LogicalPlan): LogicalPlan = plan.transform {