共用方式為


INCONSISTENT_BEHAVIOR_CROSS_VERSION錯誤條件

SQLSTATE: 42K0B

由於升級至新版本,您可能會收到不同的結果。

DATETIME_PATTERN_RECOGNITION

Spark >= 3.0:

無法辨識 <pattern> DateTimeFormatter 中的模式。

  1. 你可以設定 <config> 為「LEGACY」來恢復 Spark 3.0 之前的行為。

  2. 你可以用 '<docroot>/sql-ref-datetime-pattern.html' 的指南建立有效的 datetime 模式。

DATETIME_WEEK_BASED_PATTERN

Spark >= 3.0:

由於Spark 3.0偵測到以周為基礎的字元,因此不支援所有以周為基礎的模式: <c>

請改用 SQL 函式 EXTRACT

PARSE_DATETIME_BY_NEW_PARSER

Spark >= 3.0:

無法在新的解析器中剖析 <datetime>

你可以設 <config> 為「LEGACY」來恢復 Spark 3.0 之前的行為,或設為「CORRECTED」並當作無效的 datetime 字串。

READ_ANCIENT_DATETIME

Spark >= 3.0:

讀取日期早於1582-10-15或時間戳記早於1900-01-01T00:00:00Z

From <format> 檔案可能具有歧義,因為這些檔案可能由

Spark 2.x 或舊版 Hive,其使用舊版混合式行事曆

這與 Spark 3.0+ 的前推的格里曆不同。

如需詳細資訊,請參閱 SPARK-31404。 你可以設定 SQL 配置 <config> ,或者

Datasource 選項 <option> 為「LEGACY」以重新調整基準日期時間值

關於閱讀時的日曆差異。 讀取日期時間值

目前,請設定 SQL 設定 <config> 或資料來源選項 <option>

到「CORRECTED」。

待定

Spark >= <sparkVersion><details>

WRITE_ANCIENT_DATETIME

Spark >= 3.0:

在檔案中寫入 1582-10-15 之前的日期或 1900-01-01T00:00:00Z <format> 之前的時間戳記可能存在風險,因為這些檔案可能會被 Spark 2.x 或後續版本的 Hive 讀取,後者使用的是與 Spark 3.0+ 的預定格里曆不同的舊有混合曆法。

如需詳細資訊,請參閱 SPARK-31404。

你可以設定 <config> 為「LEGACY」,根據寫入時的日曆差異重新設定日期時間值,以獲得最大互通性。

或者將配置設定為「CORRECTED」,這樣可以按原樣寫入日期時間值,前提是你確定寫入的檔案只會被 Spark 3.0+ 或其他使用先定格里曆的系統讀取。