PySpark如何将dd/mm/yyyy hh:mm格式字符串列转换为timestamp类型
PySpark 自定义格式时间字符串转Timestamp类型方案
根因说明
直接调用to_timestamp()不传格式参数时,PySpark会使用默认格式MM-dd-yyyy HH:mm:ss.SSSS匹配输入字符串,你输入的dd/mm/yyyy HH:mm格式和默认格式不匹配,因此转换结果全为null。
解决步骤
1. 完整转换字符串为Timestamp类型
给to_timestamp()传入第二个参数,指定你的输入时间格式即可完成转换:
from pyspark.sql.functions import to_timestamp # 按dd/MM/yyyy HH:mm格式解析字符串列为Timestamp类型 q1 = q1.withColumn("full_timestamp", to_timestamp("ts", "dd/MM/yyyy HH:mm")) # 验证转换结果 q1.show()
2. 提取仅保留时分的结果
根据你需要的输出类型选择对应方案:
- 若需要字符串格式的时分:
from pyspark.sql.functions import date_format q1 = q1.withColumn("hhmm_str", date_format("full_timestamp", "HH:mm"))
- 若需要保留Timestamp类型(日期会默认补为1970-01-01,仅时分部分和原始数据一致):
from pyspark.sql.functions import to_timestamp, date_format q1 = q1.withColumn("hhmm_timestamp", to_timestamp(date_format("full_timestamp", "HH:mm"), "HH:mm"))
注意事项
- 格式符严格区分大小写:
MM代表月份,mm代表分钟,混用会导致转换失败 - 24小时制对应
HH,12小时制对应hh,需和原始输入的时间格式对齐
内容的提问来源于stack exchange,提问作者Martin Walczyński
相关产品推荐
相关产品推荐

