java.sql.timestamp
タイプの2つのフィールドを持っています
に2をjava.sql.Timestampフィールド間の日数を取得し、私は以下にこれらの2つの列はScalaの
間の日数を検索するためにどのようなフォーマットであります* 2016-12-23 23:56:02.0(yyyy-MM-dd HH:mm:ss.S)
私は多くの方法を試しましたが、解決策は見つかりませんでした。だから誰でもここで助けてくれるはずです。
java.sql.timestamp
タイプの2つのフィールドを持っています
に2をjava.sql.Timestampフィールド間の日数を取得し、私は以下にこれらの2つの列はScalaの
間の日数を検索するためにどのようなフォーマットであります* 2016-12-23 23:56:02.0(yyyy-MM-dd HH:mm:ss.S)
私は多くの方法を試しましたが、解決策は見つかりませんでした。だから誰でもここで助けてくれるはずです。
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|
+---+------------------+
datediffメソッドは列を必要としますが、私は2つのフィールドを持っており、これらの2つのフィールドの間の日の違いが欲しい詳細は以下の通り です。val firstDate:java.sql.TimeStamp = 2016-12-23 23:56:02.0 val secondDate:java.sql.TimeStamp = 2017-12-23 23:56:02.0 これら2つの間の日数が必要です日付 –
あなたは列を扱うことを妨げる原因は何ですか? – stefanobaghino
変数名を指定すると、以下のエラーが発生します。
あなた形式は 'yyyy-MM-dd HH:mm:ss.S'のようになります。 –
重複した質問ではありません。これで私はjava.sql.timestamp形式について質問しており、あなたがマークした質問は日付について取っています。 @ElliottFrisch –
はい..あなたは右のmuフォーマットがyyyy-MM-dd HH:mm:ss.Sです。私の質問に変更を加えました –