【问题标题】:Scala Spark : Convert Double Column to Date Time Column in dataframeScala Spark:将双列转换为数据框中的日期时间列
【发布时间】:2020-01-28 03:58:00
【问题描述】:

我正在尝试编写代码来将日期时间列 date 和 last_updated_date 转换为“mm-dd-yyyy”格式以供显示。我该怎么做?

import org.joda.time._
import scala.tools._
import org.joda.time.format.DateTimeFormat._
import java.text.SimpleDateFormat
import org.apache.spark.sql.functions.{unix_timestamp, to_date}
root
 |-- date: double (nullable = false)
 |-- last_updated_date: double (nullable = false)
 |-- Percent_Used: double (nullable = false)

+------------+---------------------+------------+
|        date|    last_updated_date|Percent_Used|
+------------+---------------------+------------+
| 1.453923E12|        1.47080394E12| 1.948327124|
|1.4539233E12|        1.47080394E12| 2.019636442|
|1.4539236E12|        1.47080394E12| 1.995299371|
+------------+---------------------+------------+

【问题讨论】:

  • 你弄明白了吗?如果可以,你能帮我解答吗

标签: scala date apache-spark


【解决方案1】:

转换为时间戳:

df.select(col("date").cast("timestamp"));

【讨论】:

  • 嗯,我认为这有一些问题,因为日期是“长”的,这导致直接执行此操作时日期不正常
【解决方案2】:

使用from_unixtime将其转换为时间戳:

df.select(from_unixtime("date").as("date"))

【讨论】:

    【解决方案3】:

    Fetching datetime from float in Python

    这个答案对我有用,实际上是一秒计算

    import datetime serial = 43822.59722222222 seconds = (serial - 25569) * 86400.0 print(datetime.datetime.utcfromtimestamp(seconds))

    Convert excel timestamp double value into datetime or timestamp

    【讨论】:

      猜你喜欢
      • 2020-11-06
      • 2017-06-11
      • 1970-01-01
      • 2018-02-09
      • 1970-01-01
      • 2021-12-27
      • 2012-02-02
      • 1970-01-01
      • 2016-12-25
      相关资源
      最近更新 更多