Scala 如何将当前_time-x(仅小时)作为列添加到现有Spark数据帧中
我有一个现有的Spark数据帧Scala 如何将当前_time-x(仅小时)作为列添加到现有Spark数据帧中,scala,dataframe,apache-spark,apache-spark-sql,Scala,Dataframe,Apache Spark,Apache Spark Sql,我有一个现有的Spark数据帧df。我想在其中添加一列Hour,该列只包含小时(无日期、无分钟、无秒) 此外,小时数应比当前时间晚“x”小时 我在当前日期后的“x”天内完成了以下操作(仅限日期) df.withColumn(“date”,to_date(date_add(current_date(),-x))) 我现在只想在几个小时内得到完全一样的东西。我该怎么办?您可以在下面使用 df.withColumn("date", to_date(date_add(current
df
。我想在其中添加一列Hour
,该列只包含小时(无日期、无分钟、无秒)
此外,小时数应比当前时间晚“x”小时
我在当前日期后的“x”天内完成了以下操作(仅限日期)
df.withColumn(“date”,to_date(date_add(current_date(),-x)))
我现在只想在几个小时内得到完全一样的东西。我该怎么办?您可以在下面使用
df.withColumn("date", to_date(date_add(current_date(), -x))).withColumn("hour",hour(current_timestamp)-y)
这里y是您想要落后的小时数。您可以使用
interval
减去给定的小时数,并使用hour
仅获取小时数:
val x = 1
val df2 = df.withColumn("hour", expr(s"hour(current_timestamp() - interval $x hours)"))
例如,如果当前时间戳为凌晨1点,y为6,这将导致负小时数,谢谢。还有,如果我想保留整个时间戳,我该怎么办;但减去“x”小时后,只需删除hour()@DebapratimChakraborty