適用於:
SQL
Databricks 執行時 18.3 及以上版本
Important
這項功能位於 測試版 (Beta) 中。 工作區管理員可以從 「預覽 」頁面控制對此功能的存取。 請參閱 管理 Azure Databricks 預覽。
表示一天中由小時、分鐘和秒等欄位組成的時間點,且不包含時區。
Syntax
TIME | TIME(p)
p:一個可選的精確度,指定秒數欄位中的小數位數。
有效值為 0 至 6。 若 p 省略,預設精度為 6 (微秒)。
Limits
支援的時間值範圍為 00:00:00.00000023:59:59.999999。
Literals
TIME timeString
timeString
{ '[h]h:[m]m' |
'[h]h:[m]m:[s]s' |
'[h]h:[m]m:[s]s.[f...]' |
'[h]h:[m]m AM|PM' |
'[h]h:[m]m:[s]s AM|PM' |
'[h]h:[m]m:[s]s.[f...] AM|PM' }
-
[h]h:與 之間(24小時格式)1201或 之間(12小時格式)PM/AM之間的一或兩位數小時 。0023 -
[m]m:與59之間00有一或兩位數的分鐘。 -
[s]s:與59之間00有一或兩位數的秒。 -
[f...]:最多 6 位數的小數秒。 -
AM或PM:可選的大小寫不區分後綴,表示12小時制的時鐘數值。
前置詞 TIME 不區分大小寫。
若未指定第二個分量,則預設為 0。
如果字面值不代表正確的時間,Azure Databricks 會產生錯誤。
精密規則
當TIME兩個精度不同的值合併時(例如在 COALESCE、CASE、UNION 或算術中),結果會使用較寬的精度。
例如,和 TIME(6) 的TIME(3)最小常見類型是TIME(6)。
當你將某個數值鑄造 TIME 到較低的精度時,分秒會 被截斷,而不是四捨五入:
> SELECT CAST(TIME'12:30:45.987654' AS TIME(3));
12:30:45.987
當你將白天的時間區間加 TIME減到 時,結果會使用更 TIME 寬的精度和該區間的分秒精度。 例如,TIME(0) + INTERVAL '1.123456' SECOND 會傳回 TIME(6)。 若結果低於[00:00:00, 24:00:00),Azure Databricks會升高DATETIME_OVERFLOW。
註釋
所有對 TIME 數值的運算皆未考慮任何時區。
若要在 Delta Lake 表格中使用 TIME 欄位,當您建立一個新的 Delta 表格並以 欄位 為 時 TIME ,支援會自動啟用。 要將欄位加入 TIME 現有資料表,您必須先啟用以下功能:
ALTER TABLE table_name SET TBLPROPERTIES ('delta.feature.timeType' = 'supported')
此 TIME 類型有以下限制:
- 生成欄位不支援。
- 不支援用於布隆濾波器索引。
- 不支援 Z 排序。
Examples
> SELECT TIME'10:30:00';
10:30:00
> SELECT TIME'08:15';
08:15:00
> SELECT TIME'23:59:59.123456';
23:59:59.123456
> SELECT CAST('14:30:00' AS TIME);
14:30:00
> SELECT CAST('09:15:30.5' AS TIME(3));
09:15:30.500
> SELECT current_time();
16:57:04.304361
> SELECT make_time(6, 30, 45.887);
06:30:45.887000