有一个独特的要求,我想转换格式的字符串时间戳:2023-06-07T14:10:38.123+01:00
,我试图使用格式'yyyy-MM-dd HH:mm:ss.SSSXXX'
转换它转换为2023-06-07 13:10:38.123
,但它是下降的时区+01:00.我想使字符串列时间戳和保持字符串格式相同2023-06-07T14:10:38.123+01:00
.我搜索了多个网站,但仍然无法找到如何保持相同的字符串.或者,如果这是一个不可行的要求,那么请分享你的经验.spark.sql("select to_timestamp('2023-06-07T16:10:38.123+01:00', 'yyyy-MM-dd\\'T\\'HH:mm:ss.SSSXXX') as timestamp").show(truncate=false)
它给了我这个:
+-----------------------+
|timestamp |
+-----------------------+
|2023-06-07 16:10:38.123|
+-----------------------+
1条答案
按热度按时间dfty9e191#
给定字符串为:
如果将其转换为TIMESTAMP,Spark会将其存储为UTC时间戳:
或者更准确地说,是从epoch 1970-01-01 00:00:00 Z开始的秒数-总之,是UTC时区。Spark不存储原始时区信息。
如果你在Spark中显示时间戳,它使用默认的
yyyy-MM-dd hh:mm:ss
,使用会话时区。如果你的是'+01:00',它将简单地显示为:您可以显式地格式化时间戳并使用date_format函数添加偏移量信息: