当前位置: 首页 > 知识库问答 >
问题:

用dataframe scala中的另一个日期对当前日期进行子基化

明星剑
2023-03-14
+----------------+
|date            |
+----------------+
|8/11/2017 15:00 |
|9/11/2017 10:00 |
+----------------+
+----------------+------------+
|date            | difference |
+----------------+------------+
|8/11/2017 15:00 | xxxxxxxxxx |
|9/11/2017 10:00 | xxxxxxxxxx |
+----------------+------------+
val current = current_timestamp()
df.withColumn("difference", current - unix_timestamp(col(date)))

但是得到这个错误

org.apache.spark.sql.analysisException:无法解析“(current_timestamp()-unix_timestamp(date,'yyyy-mm-dd hh:mm:ss'))”,原因是数据类型不匹配:“(current_timestamp()-unix_timestamp(date,'yyyy-mm-ss'))中的类型不同(timestamp和bigint)。;;

我也试过

val current = BigInt(System.currenttimeMillis / 1000)
df.withColumn("difference", current - unix_timestamp(col(date))) 
val current = unix_timestamp(current_timestamp())
but the col "difference" is null

谢谢

共有1个答案

邵畅
2023-03-14

必须为UNIX_TIMESTAMP使用正确的格式:

df.withColumn("difference", current_timestamp().cast("long") - unix_timestamp(col("date"), "dd/mm/yyyy HH:mm"))

或使用最新版本:

to_timestamp(col("date"), "dd/mm/yyyy HH:mm") - current_timestamp())

获取interval列。

 类似资料:
  • 我有个约会‘2019-05-08t 22:15:00-0400’。我想将这个日期与当前的日期和时间进行比较。如果上述日期和时间小于当前日期和时间,那么我必须做些什么。 我的代码是:- 但它返回 false 。

  • 我想根据月份对值进行分类,以便第一次过滤这些值 例如:-

  • 问题内容: 我已经进行了所有设置,将当前日期存储到Java中的变量中。我要弄清楚的是如何存储当前日期之后1年的日期。 这是我当前的日期: 因此,例如,如果今天是今天,它将存储2/18/2013。我正在尝试存储日期2/18/2014。我将如何去做呢? 问题答案: 如果您不想拖动外部库,只需使用 请注意,如果日期是,并且您添加了1年,则将获得

  • 问题内容: 我只想要从当前日期开始的日期。我如何在CodeIgniter中询问此问题?“ end_date”是DATETIME(Ymd H:i:s)。 这不起作用: 问题答案: 您需要使用PHP格式化日期,以便采用MySQL想要的格式。 试试这个: 您也可以为此使用MySQL 。 编辑:如果要使用别名 ,则可以使用HAVING代替WHERE。

  • 有了这个,我会检查服务最后一次运行的时间,以及是否有必要再次运行。 我正在将当前日期转换为整数。但后来我得到一个错误:错误: 08-27 17:21:40.930:W/System.err(26577):java.lang.NumberFormatException:无效int:“201308271721” 08-27 17:21:40.930:W/System.err(26577):java.l

  • 我有一个应用程序,从一个api接收一些数据,我想比较它们,但不知道如何做。 来自api的日期在不同的模板中,加上它的字符串,所以我无法比较。 如果收到的日期早于当前日期,我想显示一条错误消息。 以下是api日期的来源(我已经在控制台上打印出来): 这是日期时间。现在在颤振: 有没有办法比较它们?