【问题标题】:Timestamp to string conversion dataframe时间戳到字符串转换数据框
【发布时间】:2021-02-28 21:28:00
【问题描述】:

我想在 (scala) spark 数据帧中将时间戳转换为人类可读的字符串并执行以下操作:

df.select(
        $"ts",
        to_date(from_unixtime($"ts"), "yyyy-MM-dd").as("date"),
        to_date(from_unixtime($"ts"), "yyyy-MM-dd-hh").as("date2")
      ).limit(10)
       .show(false)

并获得以下信息:

+----------+----------+-----+
|ts        |date      |date2|
+----------+----------+-----+
|1605628105|2020-11-17|null |
|1605628105|2020-11-17|null |
|1605628105|2020-11-17|null |
|1605628105|2020-11-17|null |
|1605628105|2020-11-17|null |
|1605628105|2020-11-17|null |
|1605628105|2020-11-17|null |
|1605628105|2020-11-17|null |
|1605628105|2020-11-17|null |
|1605628105|2020-11-17|null |
+----------+----------+-----+

为什么我不能从时间戳中提取小时?为什么会产生 null?

【问题讨论】:

    标签: scala apache-spark apache-spark-sql apache-spark-dataset


    【解决方案1】:

    to_date 只会给你日期,但不会给你其他值,比如小时、分钟。要获取小时值,请使用 date_format 函数。

    df.select(
            $"ts",
            to_date(from_unixtime($"ts"), "yyyy-MM-dd").as("date"),
            date_format(from_unixtime($"ts"), "yyyy-MM-dd-hh").as("date2") // Added date_format.
    )
    .limit(10)
    .show(false)
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-15
      • 1970-01-01
      • 2020-11-22
      • 2019-10-30
      • 2022-01-21
      • 2021-11-17
      • 1970-01-01
      • 2019-07-01
      相关资源
      最近更新 更多