首页 > 解决方案 > 如何将excel日期长类型转换为scala中的时间戳

问题描述

列 1 = 43784.2892847338

尝试了以下选项

val finalDF=df1.withColumn("Column1 ",expr("""(Column1 -25569) * 86400.0"""))
print(finalDF)

结果:1911120001 预期结果应在“YYYY-MM-dd HH:mm:ss.SSS”中

你能帮我解决一下吗。

标签: scaladataframeapache-sparktimestampdatabricks

解决方案


如果你使用from_unixtimethen 它不会给你.SSS毫秒。因此,在这种情况下,最好使用铸件。

val df1 = spark.createDataFrame(Seq(("1", 43784.2892847338))).toDF("id", "Column1")

val finalDF = df1.withColumn("Column1_timestamp", expr("""(Column1 -25569) * 86400.0""").cast("timestamp"))
finalDF.show(false)

+---+----------------+-----------------------+
|id |Column1         |Column1_timestamp      |
+---+----------------+-----------------------+
|1  |43784.2892847338|2019-11-15 06:56:34.201|
+---+----------------+-----------------------+

推荐阅读