У меня есть переменная, состоящая из date_time. Теперь я хочу получить разницу в часах для этого date_time с current_time. Как лучше всего добиться этого в scala?
val create_time = "2020-08-05 10:10:10"
Предположим, если current_time выглядит следующим образом:
val current_time = "2020-08-06 10:10:10"
Теперь я ожидаю продолжительность в часах. Я могу добиться этого, используя искровые кадры данных, используя to_timestamp()
, но хочу посмотреть, как мы можем это сделать в scala.
val df = Seq(("2020-08-01 12:01:19"), ("2020-08-05 12:01:19"), ("2020-08-06 16:44:55"), ("2020-08-06 16:50:59")).toDF("input_timestamp")
df.withColumn("input_timestamp", to_timestamp(col("input_timestamp")))
.withColumn("current_timestamp", current_timestamp().as("current_timestamp"))
.withColumn("DiffInSeconds", current_timestamp().cast(LongType) - col("input_timestamp").cast(LongType))
.withColumn("DiffInHours",col("DiffInSeconds")/3600D)
.withColumn("DiffInDays",round(col("DiffInHours")/24)).show(false)
+-------------------+-----------------------+-------------+------------------+----------+
|input_timestamp |current_timestamp |DiffInSeconds|DiffInHours |DiffInDays|
+-------------------+-----------------------+-------------+------------------+----------+
|2020-08-01 12:01:19|2020-08-06 20:25:14.775|462235 |128.3986111111111 |5.0 |
|2020-08-05 12:01:19|2020-08-06 20:25:14.775|116635 |32.39861111111111 |1.0 |
|2020-08-06 16:44:55|2020-08-06 20:25:14.775|13219 |3.6719444444444442|0.0 |
|2020-08-06 16:50:59|2020-08-06 20:25:14.775|12855 |3.5708333333333333|0.0 |
+-------------------+-----------------------+-------------+------------------+----------+