数据框 - 从时间戳列中减去分钟数

Dataframe- minus minutes from timestamp column

环境:Spark 1.6;斯卡拉

简单的问题,但我没有得到准确的答案。我有一个数据框 DF

id | cr_date
-----------------------
1| 2017-03-17 11:12:00
----------------------
2|2017-03-17 15:10:00

我需要从 cr_date 减去 5 分钟。我试过了

val DF2= DF.select ($"cr_Date".cast("timestamp").minusMinutes(5)) // 无效

有什么建议吗? 谢谢

df.select(from_unixtime(unix_timestamp(col("cr_dt")).minus(5 * 60), "YYYY-MM-dd HH:mm:ss"))

spark 中没有这样的 minusMinutes 方法。 上面的代码应该是 return 预期的结果。

如果有人遇到同样的问题,我发现使用上述方法可以保持年份。例如,我在应用时有一个时间戳为“2015-01-01 00:00:00”的数据框:

df.select(from_unixtime(unix_timestamp(col("cr_dt")).minus(5 * 60), "YYYY-MM-dd HH:mm:ss"))

我得到的结果是“2015-12-31 23:55:00”,但我的预期结果是“2014-12-31 23:55:00”。 这似乎是由于 "YYYY" 而不是 "yyyy"。进行此更改:

df.select(from_unixtime(unix_timestamp(col("cr_dt")).minus(5 * 60), "yyyy-MM-dd HH:mm:ss"))

给出了我正在寻找的结果。