【问题标题】:get date difference from the columns in dataframe and get seconds -Spark scala从数据框中的列中获取日期差异并获取秒数-Spark scala
【发布时间】:2018-03-23 04:46:29
【问题描述】:

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

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))

从这里我无法转换成秒,任何人都可以帮助解决这个问题。提前致谢

【问题讨论】:

    标签: scala apache-spark dataframe spark-dataframe


    【解决方案1】:

    使用 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
    """)
    

    【讨论】:

    • 谢谢 Leo,有帮助
    猜你喜欢
    • 2017-08-04
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 2018-07-17
    • 2011-12-18
    • 2018-02-23
    相关资源
    最近更新 更多