如何在PySpark中为含时分秒的日期列添加天数
解决PySpark中日期时间加天数保留时分秒的问题
问题核心:date_add()函数会将输入的timestamp类型转换为date类型计算,因此丢失了时分秒信息。要保留原时间的时分秒,需直接对timestamp类型做时间增量计算,以下是两种可行方案:
方案1:使用Spark SQL的Interval语法
通过expr()直接给Date_ini加上对应天数的时间间隔,完整保留时分秒:
from pyspark.sql.functions import expr df = df.withColumn("Date_limit", expr("Date_ini + interval Days_to_add day"))
方案2:使用timestamp_add()函数(Spark 3.0及以上版本支持)
该函数专门针对timestamp类型做增量计算,需将天数转换为秒数(1天=86400秒):
from pyspark.sql.functions import timestamp_add, col df = df.withColumn("Date_limit", timestamp_add(col("Date_ini"), col("Days_to_add") * 86400))
验证示例
假设DataFrame数据如下:
| Date_ini | Days_to_add |
|---|---|
| 2024-05-20 14:30:45 | 3 |
使用上述方案后,Date_limit会得到2024-05-23 14:30:45,完全保留了原时间的时分秒信息。
内容的提问来源于stack exchange,提问作者ALbertittor
相关产品推荐
相关产品推荐

