'的 01-FEB-2013 '这是我的约会对象。我怎样才能得到结果为2013年3月1日?
SELECT DATE_ADD( '2011-01-01', INTERVAL 1 month );
这可以通过mySql实现。我希望在scala中使用sqlContext的结果是否可能?
答案 0 :(得分:5)
您需要使用org.apache.spark.sql.functions.add_months
:
def add_months(startDate: Column, numMonths: Int): Column
"Returns the date that is numMonths after startDate."
以下是其用法示例:
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|
+---+----------+----------+