PySpark中mmddyyHHmmss格式字符串转时间戳返回null如何解决?
PySpark日期转时间戳返回null的解决方法
问题根源
你的代码里日期格式字符串完全写错了:输入的date_string是09082023123456(结构为月(2位)+日(2位)+年(4位)+时(2位)+分(2位)+秒(2位)),但你指定的格式是MMddyyyyMMddHHmmss,重复了MMddyyyy部分,和输入字符串的长度、结构完全不匹配,导致to_timestamp无法解析,返回全null。
正确代码示例
情况1:输入是4位年份(如09082023123456)
修正格式字符串为MMddyyyyHHmmss即可:
df = df.withColumn("timestamp_column", to_timestamp(df["date_string"], "MMddyyyyHHmmss"))
情况2:输入是2位年份(如090823123456,对应mmddyyHHmmss格式)
格式字符串改为MMddyyHHmmss:
df = df.withColumn("timestamp_column", to_timestamp(df["date_string"], "MMddyyHHmmss"))
验证小技巧
可以先单独测试格式匹配:
from pyspark.sql.functions import to_timestamp spark.sql("select to_timestamp('09082023123456', 'MMddyyyyHHmmss') as ts").show()
如果返回正确的时间戳,说明格式没问题,再应用到DataFrame上。
内容的提问来源于stack exchange,提问作者user2104898
相关产品推荐
相关产品推荐

