PySpark中特定格式字符串转指定日期格式返回NULL的解决方法
解决办法
Spark SQL 实现
直接在TO_DATE函数中指定输入日期的格式即可,你之前的写法因为未匹配原始字符串格式,导致解析失败返回NULL。执行以下SQL语句:
SELECT DATE_FORMAT(TO_DATE(your_column_name, 'dd-MMM-yy HH.mm.ss'), 'yyyyMMdd') AS formatted_date FROM your_table;
其中'dd-MMM-yy HH.mm.ss'对应原始日期字符串的格式规则:
dd:两位数字表示的日期MMM:三位英文月份缩写(如MAY)yy:两位数字表示的年份HH.mm.ss:时分秒,分隔符为.
PySpark 实现
通过to_date函数指定输入格式,再用date_format转换为目标格式:
from pyspark.sql.functions import to_date, date_format # 假设原始列名为original_date,生成新列formatted_date df = df.withColumn( "formatted_date", date_format(to_date("original_date", "dd-MMM-yy HH.mm.ss"), "yyyyMMdd") )
原方法返回NULL的原因
Spark的TO_DATE函数若不指定输入格式,会使用默认的日期格式(通常为yyyy-MM-dd),而你的原始日期字符串格式06-MAY-16 09.17.15和默认格式不匹配,导致解析失败,最终返回NULL。
内容的提问来源于stack exchange,提问作者Carolina Karoullas
相关产品推荐
相关产品推荐

