фрейм данных spark преобразует строковый столбец в метку времени с заданным форматом - PullRequest
0 голосов
/ 26 октября 2018

когда я выполню

sparkSession.sql("SELECT to_timestamp('2018-08-04.11:18:29 AM', 'yyyy-MM-dd.hh:mm:ss a') as timestamp")

утра / вечера отсутствует в ответе

+-------------------+
|          timestamp|
+-------------------+
|2018-08-04 11:18:29|
+-------------------+

но если AM / PM нет, то он дает правильный ответ.

с использованием unix_timestamp

sparkSession.sql("select from_unixtime(unix_timestamp('08-04-2018.11:18:29 AM','dd-MM-yyyy.HH:mm:ss a'), 'dd-MM-yyyy.HH:mm:ss a') as timestamp")

дает правильный ответ, но тип данных становится строкой, тогда как мое требование - преобразовать тип данных в метку времени без потери данных.

у кого-нибудь есть предложения?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Формат печатного представления является фиксированным (строка, соответствующая ISO 8601 в местном часовом поясе) и не может быть изменен.

Здесь нет преобразования, которое могло бы вам помочь, потому что любое, которое удовлетворяло бы формату вывода, должно было бы жаждать данных в строку.

0 голосов
/ 26 октября 2018

AM / PM не пропущен в типе данных Timestamp. Это просто показывает время в 24-часовом формате. Вы не теряете никакой информации.

Например,

scala> spark.sql("SELECT to_timestamp('2018-08-04.11:18:29 PM', 'yyyy-MM-dd.hh:mm:ss a') as timestamp").show(false)
+-------------------+
|timestamp          |
+-------------------+
|2018-08-04 23:18:29|
+-------------------+

Если вы хотите, чтобы ваша временная метка была представлена ​​с помощью AM / PM, просто используйте функцию форматирования даты / времени

...