Как изменить строку на ЧЧ: мм: сс только в свече - PullRequest
0 голосов
/ 31 января 2019

Я получаю время в виде строки, например 134455, и мне нужно преобразовать в 13:44:55, используя spark sql, как мы можем получить это в правильном формате

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019
val df = Seq("133456").toDF
+------+
| value|
+------+
|133456|
+------+

df.withColumn("value", unix_timestamp('value, "HHmmss"))
  .withColumn("value", from_unixtime('value, "HH:mm:ss"))
  .show
+--------+
|   value|
+--------+
|13:34:56|
+--------+

Обратите внимание, что метка времени Unix сохраняется как количество секунд с 00:00:00, 1 января 1970 года. Если вы попытаетесь преобразовать время с точностью до миллисекунды в метку времени, вы потеряете миллисекундную частьвремя.Для случаев, включающих миллисекунды, вам нужно будет использовать другой подход.

0 голосов
/ 01 февраля 2019

Вы можете попробовать функцию regexp_replace.

scala> val df = Seq((134455 )).toDF("ts_str")
df: org.apache.spark.sql.DataFrame = [ts_str: int]

scala> df.show(false)
+------+
|ts_str|
+------+
|134455|
+------+


scala> df.withColumn("ts",regexp_replace('ts_str,"""(\d\d)""","$1:")).show(false)
+------+---------+
|ts_str|ts       |
+------+---------+
|134455|13:44:55:|
+------+---------+


scala> df.withColumn("ts",trim(regexp_replace('ts_str,"""(\d\d)""","$1:"),":")).show(false)
+------+--------+
|ts_str|ts      |
+------+--------+
|134455|13:44:55|
+------+--------+


scala>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...