You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark SQL中yyyy_MM格式字符串转日期类型返回null如何解决

问题根因

原语句返回null的核心原因是源字符串的日期格式和UNIX_TIMESTAMP指定的解析格式不匹配:你的源date列是yyyy_MM格式(下划线分隔年月,无日期),但你传入的解析格式为yyyy-MM-01(减号分隔,自带日期位),格式不匹配导致解析失败。

解决方案

以下两种写法均适用于Hive/Spark SQL环境,最终返回的Date列为标准日期类型:

  • 字符串替换拼接法(写法更直观,兼容性好)
%sql
SELECT Col1,Col2,Col3,Col4, 
TO_DATE(CONCAT(REPLACE(date, '_', '-'), '-01')) AS Date,
sales
FROM db.table

逻辑说明:先把源字符串的下划线替换为减号,再拼接-01补全日期位,最后直接转成日期类型即可。

  • 适配格式的UNIX_TIMESTAMP写法
%sql
SELECT Col1,Col2,Col3,Col4, 
TO_DATE(
    CAST(UNIX_TIMESTAMP(date, 'yyyy_MM') AS TIMESTAMP)
) AS Date,
sales
FROM db.table

逻辑说明:给UNIX_TIMESTAMP传入和源数据完全匹配的yyyy_MM解析格式,解析时会默认补全当月1号的时间戳,再转成日期类型即可。

内容的提问来源于stack exchange,提问作者Nabia Salman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:45:04