分享方式:


TIMESTAMP_NTZ 類型

適用於:核取記號為「是」 Databricks SQL 核取記號為「是」 Databricks Runtime 13.3 LTS 和更新版本

代表由欄位年、月、日、小時、分鐘和秒組成的值。 執行所有作業,無需考慮任何時區。

這項功能處於公開預覽狀態。 請參閱附註一節,了解不支援的功能。

若要在 Delta Lake 上使用這項功能,必須啟用資料表的支援。 當您建立具有 TIMESTAMP_NTZ 類型資料行的新差異資料表時,會自動啟用功能支援。 當您將 TIMESTAMP_NTZ 類型的資料行新增至現有的資料表時,它不會自動啟用。 若要啟用 TIMESTAMP_NTZ 資料行的支援,必須明確啟用現有資料表的功能支援。

啟用支援會升級您的資料表通訊協定。 請參閱 Azure Databricks 如何管理 Delta Lake 功能相容性?。 下列命令啟用此功能:

ALTER TABLE table_name SET TBLPROPERTIES ('delta.feature.timestampNtz' = 'supported')

語法

TIMESTAMP_NTZ

限制

支援的時間戳記範圍是 -290308-12-21 BCE 19:59:06+294247-01-10 CE 04:00:54

常值

TIMESTAMP_NTZ timestampString

timestampString
{ '[+|-]yyyy[...]' |
  '[+|-]yyyy[...]-[m]m' |
  '[+|-]yyyy[...]-[m]m-[d]d' |
  '[+|-]yyyy[...]-[m]m-[d]d ' |
  '[+|-]yyyy[...]-[m]m-[d]d[T][h]h[:]' |
  '[+|-]yyyy[..]-[m]m-[d]d[T][h]h:[m]m[:]' |
  '[+|-]yyyy[...]-[m]m-[d]d[T][h]h:[m]m:[s]s[.]' |
  '[+|-]yyyy[...]-[m]m-[d]d[T][h]h:[m]m:[s]s.[ms][ms][ms][us][us][us]' }
  • +-:選擇性符號。 - 表示 BCE,+ 表示 CE (預設值)。
  • yyyy:至少包含四位數的年份。
  • [m]m:介於 01 到 12 之間的一或兩位數月份。
  • [d]d:介於 01 到 31 之間的一或兩位數日期。
  • h[h]:介於 00 到 23 之間的一或兩位數小時。
  • m[m]:介於 00 到 59 之間的一或兩位數分鐘。
  • s[s]:介於 00 到 59 之間的一或兩位數秒數。
  • [ms][ms][ms][us][us][us]:最多 6 位數的小數秒。

如果未指定月份或日期元件,則預設為 1。 如果未指定小時、分鐘或秒數元件,則預設為 0。

如果常值不代表適當的時間戳記,則 Azure Databricks 就會引發錯誤。

備註

TIMESTAMP_NTZ 具有下列限制:

  • Photon 支援需要 Databricks Runtime 15.4 和更新版本。
  • 在 Power BI、Tableau、Databricks JDBC/ODBC 驅動程式或 Databricks 開放原始碼驅動程式中使用的 Databricks 資料源中不受支援。
  • 在 Databricks Runtime 14.0 和以下版本的 Delta Sharing 中不受支援。
  • 檔案來源中支援的 TIMESTAMP_NTZ 類型,包括 Delta/Parquet/ORC/AVRO/JSON/CSV。 對於具有 TIMESTAMP_NTZ 資料行的 JSON/CSV 檔案,結構描述推斷會受到限制。 為了回溯相容性,從 spark.read.csv(...)spark.read.json(...) 推斷的預設時間戳記類型將是 TIMESTAMP 類型,而不是 TIMESTAMP_NTZ。

範例

> SELECT TIMESTAMP_NTZ'0000';
  0000-01-01 00:00:00

> SELECT TIMESTAMP_NTZ'2020-12-31';
  2020-12-31 00:00:00

> SELECT TIMESTAMP_NTZ'2021-7-1T8:43:28.123456';
  2021-07-01 08:43:28.123456

> SELECT current_timezone(), CAST(TIMESTAMP '2021-7-1T8:43:28' as TIMESTAMP_NTZ);
  America/Los_Angeles 2021-07-01 08:43:28

> SELECT CAST('1908-03-15 10:1:17' AS TIMESTAMP_NTZ)
  1908-03-15 10:01:17

> SELECT TIMESTAMP_NTZ'+10000';
  +10000-01-01 00:00:00