首页 > 解决方案 > spark scala中的时间戳比较返回不正确的值

问题描述

我正在比较我的数据集/数据框中的 2 个时间戳列并生成一个新列,但它给出的值不正确

dateField1 = 2021-01-12 18:58:37.725
dateField2 = 2021-01-12 18:00:00

df = df.withColumn("Flag",when($"dateField1" >= $"dateField2",true).otherwise(false))

在上面,理想情况下它应该是 true 但新列标志的值为false

标签: scalaapache-spark-sqltimestamp

解决方案


我试图根据问题中的数据创建示例输入并实现如下:

import org.apache.spark.sql.functions._
val df = Seq(("2021-01-12 18:58:37.725","2021-01-12 18:00:00")).toDF("Date1","Date2")
val df1 = df.withColumn("Date1",$"Date1".cast("Timestamp")).withColumn("Date2",$"Date2".cast("Timestamp"))
val df2 = df1.withColumn("Flag",when($"Date1" >= $"Date2",true).otherwise(false))
display(df2)  // databricks output style

您可以看到如下输出:

在此处输入图像描述


推荐阅读