我想使用SqlContext将月份添加到日期

1 scala apache-spark

' 01-FEB-2013 '这是我的日期.我怎样才能得到结果为2013年3月1日?

SELECT DATE_ADD( '2011-01-01', INTERVAL 1 month );

这是可能的mySql.I希望在scala中使用sqlContext的结果是否可能?

eva*_*man 5

你会想要使用org.apache.spark.sql.functions.add_months:

def add_months(startDate: Column, numMonths: Int): Column
"Returns the date that is numMonths after startDate."
Run Code Online (Sandbox Code Playgroud)

以下是其用法示例:

scala> val df = sc.parallelize((0 to 6).map(i => 
       {now.setMonth(i); (i, new java.sql.Date(now.getTime))}).toSeq)
       .toDF("ID", "Dates")
df: org.apache.spark.sql.DataFrame = [ID: int, Dates: date]

scala> df.show
+---+----------+
| ID|     Dates|
+---+----------+
|  0|2016-01-21|
|  1|2016-02-21|
|  2|2016-03-21|
|  3|2016-04-21|
|  4|2016-05-21|
|  5|2016-06-21|
|  6|2016-07-21|
+---+----------+

scala> df.withColumn("New Dates", add_months(df("Dates"),1)).show
+---+----------+----------+
| ID|     Dates| New Dates|
+---+----------+----------+
|  0|2016-01-21|2016-02-21|
|  1|2016-02-21|2016-03-21|
|  2|2016-03-21|2016-04-21|
|  3|2016-04-21|2016-05-21|
|  4|2016-05-21|2016-06-21|
|  5|2016-06-21|2016-07-21|
|  6|2016-07-21|2016-08-21|
+---+----------+----------+
Run Code Online (Sandbox Code Playgroud)