我有一个带有时间戳列的spark数据帧。
我想获取列的前一天日期,然后在该日期上添加时间(3,59,59)。
当前列(x1)中的Ex-值:2018-07-11 21:40:00 前一天日期:2018-07-10 在前一天的日期加上时间(3,59,59)之后,它应该像这样: 2018-07-10 03:59:59(x2) 我想在数据框中添加一列,其中“ x2”值对应于所有记录中的“ x1”值。
我想要再加上一列,其值等于(x1-x2).totalDays的精确双精度值
答案 0 :(得分:1)
减去日期并添加时间并转换为时间戳类型
from pyspark.sql.types import *
from pyspark.sql import *
>>>df.withColumn('x2',concat(date_sub(col("x1"),1),lit(" 03:59:59")).cast("timestamp"))
计算时间和日期差异:
日期差异:-
使用datediff函数,我们可以计算日期差
>>>df1.withColumn("x3",datediff(col("x1"),col("x2")))
时差
为此计算时间差,将其转换为 unix时间,然后从x1中减去x2列
>>>df1.withColumn("x3",unix_timestamp(col("x1"))-unix_timestamp(col("x2")))