繁体   English   中英

从数据框中的列获取日期差并获取秒数-Spark Scala

[英]get date difference from the columns in dataframe and get seconds -Spark scala

我有一个带有两个日期列的数据框。现在我需要得到差异,结果应该是秒

UNIX_TIMESTAMP(SUBSTR(date1, 1, 19)) - UNIX_TIMESTAMP(SUBSTR(date2, 1, 19)) AS delta

我正在尝试使用scala转换为蜂巢查询

df.select(col("date").substr(1,19)-col("poll_date").substr(1,19))

从这里开始,我无法转换为秒,请问有谁对此提供帮助。

使用DataFrame API,您只需在unix_timestamp从另一列中减去一列,就可以计算以秒为单位的日期差:

val df = Seq(
  ("2018-03-05 09:00:00", "2018-03-05 09:01:30"),
  ("2018-03-06 08:30:00", "2018-03-08 15:00:15")
).toDF("date1", "date2")

df.withColumn("tsdiff", unix_timestamp($"date2") - unix_timestamp($"date1")).
  show

// +-------------------+-------------------+------+
// |              date1|              date2|tsdiff|
// +-------------------+-------------------+------+
// |2018-03-05 09:00:00|2018-03-05 09:01:30|    90|
// |2018-03-06 08:30:00|2018-03-08 15:00:15|196215|
// +-------------------+-------------------+------+

如果需要,您也可以在Spark SQL中执行计算:

df.createOrReplaceTempView("dfview")

spark.sql("""
  select date1, date2, (unix_timestamp(date2) - unix_timestamp(date1)) as tsdiff
  from dfview
""")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM