pyspark中的to_timestamp()给出空值

g6ll5ycj  于 2023-02-11  发布在  Spark
关注(0)|答案(2)|浏览(196)

我正在尝试下面的简单转换。

data = [["06/15/2020 14:04:04]]
cols = ["date"]

df = spark.createDataFrame(data,cols)

df = df.withColumn("datetime",F.to_timestamp(F.col("date"),'MM/DD/YYYY HH24:MI:SS))
df.show()

但这给了我一个错误“所有基于周的模式是不支持的,因为Spark 3.0,检测到:Y,请改用SQL函数EXTRACT”
我想将数据格式化为该日期格式并将其转换为时间戳。

vyu0f0g1

vyu0f0g11#

应使用以下格式-MM/dd/yyyy HH:mm:ss'
检查this页面,了解所有日期时间格式相关详细信息。

df = df.withColumn("datetime",to_timestamp(col("date"),'MM/dd/yyyy HH:mm:ss'))
df.show()

+-------------------+-------------------+
|               date|           datetime|
+-------------------+-------------------+
|06/15/2020 14:04:04|2020-06-15 14:04:04|
+-------------------+-------------------+
pkln4tw6

pkln4tw62#

Spark的documentation解释了时间戳模式的不同元素。注意Spark使用Java的SimpleTimeFormat解析时间戳,它使用了一组有点混乱的格式符号。在24小时表示中,与小时匹配的符号是H,没有数字后缀。分钟是m,而不是MM代表月份。年份由y匹配,而不是由Y匹配,后者用于周年份。周年份不受支持,因此您会收到此消息。
在您的情况下,正确的格式应该是MM/dd/yyyy HH:mm:ss

相关问题