数据框 - 从时间戳列中减去分钟数
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"))
给出了我正在寻找的结果。
环境: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"))
给出了我正在寻找的结果。