>>> from datetime import datetime
>>> from zoneinfo import ZoneInfo
>>> from pyspark.sql import functions as F, types as T
>>>
>>> spark.conf.set("spark.sql.session.timeZone", "Europe/Amsterdam")
>>>
>>> df = spark.createDataFrame(
...     [
...         (datetime(2023, 1, 1, 10, tzinfo=ZoneInfo("Europe/Amsterdam")),),
...         (datetime(2023, 1, 1, 10, tzinfo=ZoneInfo("Asia/Shanghai")),)
...     ],
...     T.StructType([T.StructField("ts", T.TimestampType(), True)]),
... )
>>> df.show()
+-------------------+
|                 ts|
+-------------------+
|2023-01-01 10:00:00|
|2023-01-01 03:00:00|
+-------------------+

>>> spark.conf.set("spark.sql.timestampType", "TIMESTAMP_LTZ")
>>>
>>> df.select(F.try_to_timestamp("ts")).show()
+--------------------+
|try_to_timestamp(ts)|
+--------------------+
| 2023-01-01 10:00:00|
| 2023-01-01 03:00:00|
+--------------------+

>>> df.select(F.try_to_timestamp("ts")).printSchema()
root
 |-- try_to_timestamp(ts): timestamp (nullable = true)

>>> spark.conf.set("spark.sql.timestampType", "TIMESTAMP_NTZ")
>>>
>>> df.select(F.try_to_timestamp("ts")).show()
+--------------------+
|try_to_timestamp(ts)|
+--------------------+
| 2023-01-01 10:00:00|
| 2023-01-01 03:00:00|
+--------------------+

>>> df.select(F.try_to_timestamp("ts")).printSchema()
root
 |-- try_to_timestamp(ts): timestamp_ntz (nullable = true)
