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