2017-07-04 49 views
1
我有我的數據幀 java.sql.timestamp類型的兩個領域

得到兩個的java.sql.Timestamp場之間的天數,我想找到這兩個列如何在斯卡拉

下面之間的天數是格式* 2016年12月23日23:56:02.0(YYYY-MM-DD HH:MM:SS.S)我的數據

我試過很多方法,但沒有找到任何解決辦法。所以任何人都可以在這裏幫忙。

+1

你格式看起來更像'yyyy-MM-dd HH:mm:ss.S'。 –

+0

這不是重複的問題。在這個問題中,我詢問了關於java.sql.timestamp格式以及你標記的問題是關於日期的問題。 @ElliottFrisch –

+0

是的..你是正確畝格式爲YYYY-MM-DD HH:MM:SS.S。我已經做了我的問題的變化 –

回答

0

org.apache.spark.sql.functions是一個寶庫。例如,有datediff方法不正是你想要什麼:here is the ScalaDoc.

一個例子:

val spark: SparkSession = ??? // your spark session 
val sc: SparkContext = ??? // your spark context 

import spark.implicits._ // to better work with spark sql 

import java.sql.Timestamp 

final case class Data(id: Int, from: Timestamp, to: Timestamp) 

val ds = 
    spark.createDataset(sc.parallelize(Seq(
    Data(1, Timestamp.valueOf("2017-01-01 00:00:00"), Timestamp.valueOf("2017-01-11 00:00:00")), 
    Data(2, Timestamp.valueOf("2017-01-01 00:00:00"), Timestamp.valueOf("2017-01-21 00:00:00")), 
    Data(3, Timestamp.valueOf("2017-01-01 00:00:00"), Timestamp.valueOf("2017-01-23 00:00:00")), 
    Data(4, Timestamp.valueOf("2017-01-01 00:00:00"), Timestamp.valueOf("2017-01-07 00:00:00")) 
))) 

import org.apache.spark.sql.functions._ 

ds.select($"id", datediff($"from", $"to")).show() 

通過運行這個片段中,你最終會與下面的輸出:

+---+------------------+ 
| id|datediff(from, to)| 
+---+------------------+ 
| 1|    -10| 
| 2|    -20| 
| 3|    -22| 
| 4|    -6| 
+---+------------------+ 
+0

DATEDIFF方法錯誤需要的列,但我有田所以在我的情況下它不工作.. 下面是我有兩個領域,並希望這兩個領域之間的天差異的細節。 val firstDate:java.sql.TimeStamp = 2016-12-23 23:56:02.0 val secondDate:java.sql.TimeStamp = 2017-12-23 23:56:02.0 我希望這兩者之間的天數日期 –

+0

是什麼阻止你使用列? – stefanobaghino

+0

當我給變量名,我提示以下錯誤: :291:錯誤:類型不匹配; found:java.sql.Timestamp required:org.apache.spark.sql.Column val diffOfDays = datediff(firstDate,secDate) –