我试图从Dataframe中的现有日期时间字段创建日期字段,但出现了错误
import java.sql.Timestamp
import java.time.{LocalDateTime, ZoneOffset}
import java.time.format.DateTimeFormatter
import org.apache.spark.sql.functions._
val tempdf = Seq(Timestamp.valueOf(LocalDateTime.of(2021, 3, 8, 18, 0))).toDF("Date1")
tempdf.withColumn("newDate",Timestamp.valueOf(LocalDateTime.of(year(add_months($"Date1",-1)),month(add_months($"Date1",-1)),1))).show()
预期输出:newdate应该是“2021-2-1”(yyyy-mm-dd格式),基本上回到上个月和第一年第二天
1条答案
按热度按时间ldxq2e6h1#
你不能打电话
LocalDateTime
在Spark柱上。您需要使用spark sql方法:更整洁的方法是使用
trunc
: