PySpark:如何将带星期的日期字符串转换为yyyy-MM-dd格式?
Spark日期字符串转yyyy-MM-dd格式解决方案
问题根源
你用错了日期格式字符串:
- 开头的周几缩写需要用
EEE,而非DDD(DDD代表一年中的第几天) - 21:06是24小时制时间,对应格式符是
HH,不是12小时制的hh - 第二个日期里
Apr后的双空格无需额外处理,Spark日期解析器会自动忽略多余空格
正确代码实现
import pyspark.sql.functions as F df = spark.createDataFrame(sc.parallelize([ ['Wed Sep 30 21:06:00 1998'], ['Fri Apr 1 08:37:00 2022'], ]), ['Date']) # 转换为yyyy-MM-dd格式的日期类型 df.withColumn('Date', F.to_date(F.col('Date'), "EEE MMM dd HH:mm:ss yyyy")).show()
执行结果
+----------+ | Date| +----------+ |1998-09-30| |2022-04-01| +----------+
格式符说明
EEE:匹配英文周几缩写(如Wed、Fri)MMM:匹配英文月份缩写(如Sep、Apr)dd:匹配两位日期(含空格填充的单数字日期,如1)HH:匹配24小时制小时数(00-23)yyyy:匹配四位年份
内容的提问来源于stack exchange,提问作者John Stud
相关产品推荐
相关产品推荐

