Ich versuche, eine einfache SQL-Abfrage auf einige Datenrahmen in auszuführen Funken Shell die Abfrage fügt Intervall von 1 Woche bis zu einem gewissen Zeitpunkt wie folgt:Datum und Intervall-Zusatz in SparkSQL
Die ursprüngliche Abfrage:
scala> spark.sql("select Cast(table1.date2 as Date) + interval 1 week from table1").show()
Nun, wenn ich habe einige Tests:
scala> spark.sql("select Cast('1999-09-19' as Date) + interval 1 week from table1").show()
ich die Ergebnisse bekam richtig
+----------------------------------------------------------------------------+
|CAST(CAST(CAST(1999-09-19 AS DATE) AS TIMESTAMP) + interval 1 weeks AS DATE)|
+----------------------------------------------------------------------------+
| 1999-09-26|
+----------------------------------------------------------------------------+
(Just Zugabe von 7 Tagen 19 = 26)
Aber wenn ich das Jahr 1997 statt 1999 die Ergebnisse geändert gerade geändert!
scala> spark.sql("select Cast('1997-09-19' as Date) + interval 1 week from table1").show()
+----------------------------------------------------------------------------+
|CAST(CAST(CAST(1997-09-19 AS DATE) AS TIMESTAMP) + interval 1 weeks AS DATE)|
+----------------------------------------------------------------------------+
| 1997-09-25|
+----------------------------------------------------------------------------+
Warum die Reuslts geändert? Sollte es nicht 26 nicht 25 sein?
Also, ist dies ein Fehler in SparkSQL im Zusammenhang mit einer Art von itermediate Berechnungen Verlust oder mir fehlt etwas?
Uneinheitliche auch: Wenn Sie einen Cluster Spanning zwei Zeitzonen, Zeitstempel Datumsumstellung haben komplett auseinander fällt (es sei denn, Sie Methoden mit expliziten Zeitzonen jedes Mal verwenden). –