PySpark中带毫秒与时区的字符串转Timestamp问题
解决Spark中带7位小数秒及时区的时间字符串转Timestamp问题
你的转换代码返回null的核心原因是格式字符串不匹配:时间字符串里的秒小数部分是7位(例如.6670097),但你使用的SSS仅对应3位毫秒,导致Spark无法解析,最终返回null。
正确的转换代码
调整格式字符串,用SSSSSSS匹配7位秒小数,同时保留Z匹配时区偏移:
df = df.withColumn('CreateDate', sf.to_timestamp('CreateDate', "yyyy-MM-dd HH:mm:ss.SSSSSSS Z"))
关键说明
SSSSSSS:对应时间字符串中7位的秒小数部分,确保格式完全匹配。Z:匹配时区偏移(如-06:00),让Spark正确识别时间的时区信息。转换后的Timestamp在Spark内部以UTC存储,后续可通过会话时区设置或相关函数输出带时区的格式。
内容的提问来源于stack exchange,提问作者SivaC
相关产品推荐
相关产品推荐

