将字符串转换为时间戳

2uluyalo  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(777)

我想把一个字符串转换成时间戳。我面临的问题是字符串显示的是月份的前三个字母,而不是月份号:
例如 31-JAN-20 12.03.48.759214 AM 有没有什么聪明的方法可以让你的价值变得更高?

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

谢谢

gpnt7bae

gpnt7bae1#

使用 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|

# +----------------------------+-----------------------------+

相关问题