我有一个 Spark DataFrame,其中有一个 时间戳列(以毫秒为单位),自纪元以来。 列 是一个字符串。我现在想将该列转换为可读的人类时间,但保留毫秒。 例如:
1614088453671 -> 23-2-2021 13:54:13.671
我发现的每个示例都将时间戳转换为没有毫秒的正常人类可读时间。
我有什么:
+------------------+
|epoch_time_seconds|
+------------------+
|1614088453671 |
+------------------+
我想达到的目标:
+------------------+------------------------+
|epoch_time_seconds|human_date |
+------------------+------------------------+
|1614088453671 |23-02-2021 13:54:13.671 |
+------------------+------------------------+
答案 0 :(得分:1)
毫秒之前的时间可以使用date_format from_unixtime
获得,而毫秒可以使用模数获得。使用 format_string
组合它们。
val df2 = df.withColumn(
"human_date",
format_string(
"%s.%s",
date_format(
from_unixtime(col("epoch_time_seconds")/1000),
"dd-MM-yyyy HH:mm:ss"
),
col("epoch_time_seconds") % 1000
)
)
df2.show(false)
+------------------+-----------------------+
|epoch_time_seconds|human_date |
+------------------+-----------------------+
|1614088453671 |23-02-2021 13:54:13.671|
+------------------+-----------------------+