diff --git a/python/pyspark/sql/connect/client.py b/python/pyspark/sql/connect/client.py index a2a0797c49fa..745ca79fda91 100644 --- a/python/pyspark/sql/connect/client.py +++ b/python/pyspark/sql/connect/client.py @@ -383,7 +383,17 @@ def _proto_schema_to_pyspark_schema(self, schema: pb2.DataType) -> DataType: elif schema.HasField("timestamp"): return TimestampType() elif schema.HasField("day_time_interval"): - return DayTimeIntervalType() + start: Optional[int] = ( + schema.day_time_interval.start_field + if schema.day_time_interval.HasField("start_field") + else None + ) + end: Optional[int] = ( + schema.day_time_interval.end_field + if schema.day_time_interval.HasField("end_field") + else None + ) + return DayTimeIntervalType(startField=start, endField=end) elif schema.HasField("array"): return ArrayType( self._proto_schema_to_pyspark_schema(schema.array.element_type), diff --git a/python/pyspark/sql/tests/connect/test_connect_basic.py b/python/pyspark/sql/tests/connect/test_connect_basic.py index 0b07a8328a1f..20df8df2fe0b 100644 --- a/python/pyspark/sql/tests/connect/test_connect_basic.py +++ b/python/pyspark/sql/tests/connect/test_connect_basic.py @@ -171,6 +171,13 @@ def test_schema(self): self.connect.sql(query).schema, ) + # test DayTimeIntervalType + query = """ SELECT INTERVAL '100 10:30' DAY TO MINUTE AS interval """ + self.assertEqual( + self.spark.sql(query).schema, + self.connect.sql(query).schema, + ) + # test MapType query = """ SELECT * FROM VALUES