Я хочу преобразовать строку в метку времени. Проблема, с которой я столкнулся, заключается в том, что строка показывает первые три буквы месяца, а не номер месяца:

Например. 31-JAN-20 12.03.48.759214 AM

Есть ли какой-нибудь разумный способ превзойти ценность в лайке?

2020-01-31T12:03:48.000+0000

Благодарность

0
Antonius 12 Фев 2021 в 11:53

1 ответ

Лучший ответ

Используйте to_timestamp, чтобы преобразовать строку в тип отметки времени, затем используйте format_date, чтобы получить желаемый шаблон:

from pyspark.sql import functions as F

df = spark.createDataFrame([("31-JAN-20 12.03.48.759214 AM",)], ["date"])

df.withColumn(
    "date2",
    F.date_format(
        F.to_timestamp("date", "dd-MMM-yy h.mm.ss.SSSSSS a"),
        "yyyy-MM-dd'T'HH:mm:ss.SSS Z"
    )
).show(truncate=False)

#+----------------------------+-----------------------------+
#|date                        |date2                        |
#+----------------------------+-----------------------------+
#|31-JAN-20 12.03.48.759214 AM|2020-01-31T00:03:48.759 +0100|
#+----------------------------+-----------------------------+
1
blackbishop 12 Фев 2021 в 09:05