Spark中to_date函数未指定格式时的默认匹配规则是什么?
PySpark中
to_date()不指定格式时的日期匹配规则 当调用to_date(dateCol)不传入格式参数时,其行为完全等价于dateCol.cast("date"),遵循Spark内置的字符串转DateType转换规则,核心以ISO 8601标准格式为优先,同时兼容部分常见日期格式,具体支持的模式如下:
- ISO 8601标准格式(优先匹配):
yyyy-MM-dd(例:2024-05-20)yyyyMMdd(例:20240520)- 带时间部分的ISO字符串(自动忽略时间部分):
yyyy-MM-dd'T'HH:mm:ss(例:2024-05-20T14:30:00)、yyyy-MM-dd'T'HH:mm:ss.SSS(例:2024-05-20T14:30:00.123)
- 兼容的常见非标准格式(不同Spark版本可能略有差异):
MM/dd/yyyy(例:05/20/2024)dd/MM/yyyy(例:20/05/2024,Spark会根据数值合理性自动区分MM/dd与dd/MM,如13/05/2024会被识别为dd/MM)yyyy/MM/dd(例:2024/05/20)
注意事项
- 若字符串不符合任何内置可识别的格式,转换结果会返回
null - 内置规则会随Spark版本略有调整,若需要严格控制转换逻辑,建议始终显式指定格式参数,避免环境或版本差异导致的不一致
你找到的PySpark文档描述如下:
By default, it follows casting rules to pyspark.sql.types.DateType if the format is omitted. Equivalent to col.cast("date").
内容的提问来源于stack exchange,提问作者Juh_
相关产品推荐
相关产品推荐

