>>> spark.conf.set("spark.sql.session.timeZone", "America/Los_Angeles")
>>> spark.sql("SELECT CAST(DATE '1970-01-01' AS STRING)").show()
+---------------------------------+
|CAST(DATE '1970-01-01' AS STRING)|
+---------------------------------+
|                       1970-01-01|
+---------------------------------+

>>> spark.sql("SELECT CAST(TIMESTAMP '1970-01-01' AS STRING)").show(truncate=False)
+-----------------------------------------------+
|CAST(TIMESTAMP '1970-01-01 00:00:00' AS STRING)|
+-----------------------------------------------+
|1970-01-01 00:00:00                            |
+-----------------------------------------------+

>>> spark.sql("SELECT CAST(TIMESTAMP '1970-01-01 00:00:00.100' AS STRING)").show(truncate=False)
+-------------------------------------------------+
|CAST(TIMESTAMP '1970-01-01 00:00:00.1' AS STRING)|
+-------------------------------------------------+
|1970-01-01 00:00:00.1                            |
+-------------------------------------------------+

>>> spark.sql("SELECT CAST(TIMESTAMP '1970-01-01 00:00:00.123000' AS STRING)").show(truncate=False)
+---------------------------------------------------+
|CAST(TIMESTAMP '1970-01-01 00:00:00.123' AS STRING)|
+---------------------------------------------------+
|1970-01-01 00:00:00.123                            |
+---------------------------------------------------+

>>> spark.sql("SELECT CAST(INTERVAL 1 YEAR 2 MONTH AS STRING)").show(truncate=False)
+--------------------------------------------+
|CAST(INTERVAL '1-2' YEAR TO MONTH AS STRING)|
+--------------------------------------------+
|INTERVAL '1-2' YEAR TO MONTH                |
+--------------------------------------------+

>>> spark.sql("SELECT CAST(INTERVAL 1 DAY 2 HOUR AS STRING)").show(truncate=False)  # doctest: +SKIP
+-------------------------------------------+
|CAST(INTERVAL '1 02' DAY TO HOUR AS STRING)|
+-------------------------------------------+
|INTERVAL '1 02' DAY TO HOUR                |
+-------------------------------------------+

>>> spark.sql("SELECT CAST(INTERVAL 1 DAY 2 HOUR 3.0001 SECOND AS STRING)").show(truncate=False)
+--------------------------------------------------------+
|CAST(INTERVAL '1 02:00:03.0001' DAY TO SECOND AS STRING)|
+--------------------------------------------------------+
|INTERVAL '1 02:00:03.0001' DAY TO SECOND                |
+--------------------------------------------------------+

>>> spark.sql("SELECT CAST(array(1, 2, 3) AS STRING)").show()
+------------------------------+
|CAST(array(1, 2, 3) AS STRING)|
+------------------------------+
|                     [1, 2, 3]|
+------------------------------+

>>> spark.sql("SELECT CAST(struct(123, 'foo') AS STRING)").show()
+--------------------------------+
|CAST(struct(123, foo) AS STRING)|
+--------------------------------+
|                      {123, foo}|
+--------------------------------+

>>> spark.sql("SELECT CAST(struct(123 AS a, 'foo') AS STRING)").show()  # doctest: +SKIP
+-------------------------------------+
|CAST(struct(123 AS a, foo) AS STRING)|
+-------------------------------------+
|                           {123, foo}|
+-------------------------------------+

>>> spark.sql("SELECT CAST(map('foo', 1, 'bar', 2) AS STRING)").show()
+-----------------------------------+
|CAST(map(foo, 1, bar, 2) AS STRING)|
+-----------------------------------+
|               {foo -> 1, bar -> 2}|
+-----------------------------------+
