日期時間模式
適用於: Databricks SQL Databricks Runtime
Azure Databricks 中的日期時間使用量有數個常見案例:
- CSV 和 JSON 資料源會使用模式字串來剖析和格式化日期時間內容。
- 與轉換
STRING
至 或TIMESTAMP
之間的DATE
日期時間函式相關。 例如:
模式數據表
Azure Databricks 使用下表中的模式字母進行日期和時間剖析和格式設定:
符號 | 意義 | 簡報 | 範例 |
---|---|---|---|
G | 時代 | text | 廣告;西元 |
y | year | year | 2020;20 |
D | day-of-year | 數位(3) | 189 |
M/L | 年月 | 個月 | 7;07;七月;七月 |
日 | day-of-month | 數位(3) | 28 |
Q/q | 年四分之一 | 數位/文字 | 3;03;Q3;第三季 |
E | day-of-week | text | 星期二;星期二 |
F | 以月份對齊的星期數 | 數位(1) | 3 |
a | am-pm-of-day | am-pm | PM |
小時 | am-pm-hour-of-am(1-12) | 數位(2) | 12 |
K | am-of-pm (0-11) | 數位(2) | 0 |
k | 時鐘一天 (1-24) | 數位(2) | 0 |
H | 一天中的小時 (0-23) | 數位(2) | 0 |
m | 小時分鐘 | 數位(2) | 30 |
s | 分鐘秒 | 數位(2) | 55 |
S | fraction-of-second | 分數 | 978 |
V | 時區標識碼 | zone-id | 美國/Los_Angeles;Z;-08:30 |
z | 時區名稱 | zone-name | 太平洋標準時間;PST |
O | 本地化的區域位移 | offset-O | GMT+8;GMT+08:00;UTC-08:00; |
X | 零的區域位移 'Z' | offset-X | Z;-08;-0830;-08:30;-083015;-08:30:15; |
x | zone-offset | offset-x | +0000;-08;-0830;-08:30;-083015;-08:30:15; |
Z | zone-offset | offset-Z | +0000;-0800;-08:00; |
‘ | 文字逸出 | delimiter | |
‘’ | 單引號 | literal | ‘ |
[ | 選擇性區段開始 | ||
] | 選擇性區段結束 |
模式字母計數會決定格式。
文字:文字樣式是根據所使用的圖樣字母數目來決定。 少於 4 個模式字母會使用簡短文字形式,通常是縮寫,例如星期一星期一可能會輸出 “Mon”。 只有 4 個模式字母會使用全文檢索窗體,通常是完整描述,例如星期一星期一可能會輸出 「星期一」。 5 個以上的字母將會失敗。
Number(n):此處的 n 代表可以使用此日期時間模式類型的最大字母計數。 如果字母計數是其中一個,則值會使用最少位數且沒有填補來輸出。 否則,數位計數會作為輸出字段的寬度,並視需要以零填補值。
數位/文字:如果模式字母的計數是 3 或更大,請使用上述的文字規則。 否則,請使用上述數字規則。
分數:使用一或多個連續
'S'
字元,例如 ,SSSSSS
剖析和格式化秒分數。 為了剖析,可接受的分數長度可以是 [1,連續 'S' 的數目]。 針對格式化,分數長度會填補為零的連續 『S』 數目。 Azure Databricks 支援具有最多 6 個有效位數的微秒精確度日期時間,但可以剖析超過部分截斷的奈秒奈秒。Year:字母計數會決定使用填補的最小字段寬度。 如果字母計數為 2,則會使用縮減的兩位數窗體。 若要列印,這會輸出最右邊的兩位數。 為了剖析,這會使用 2000 的基底值進行剖析,導致包含 2000 到 2099 範圍內的一年。 如果字母計數小於四個(但不是兩個),則符號只會輸出負年。 否則,如果 『G』 不存在時超過面板寬度,則會輸出符號。 7 個以上的字母將會失敗。
月份:它會遵循數位/文字的規則。 文字表單取決於字母 -
'M'
表示「標準」表單,而'L'
代表「獨立」表單。 這兩種形式只在某些特定語言中不同。 例如,在俄文中,'Июль' 是 7 月的獨立形式,而 'Июля' 是標準形式。 以下是所有支援的模式字母範例:'M'
或'L'
:從 1 開始的年份月份號碼。 和'L'
之間'M'
沒有任何差異。 從 1 到 9 的月份列印沒有邊框間距。> SELECT date_format(date '1970-01-01', 'M'); 1 > SELECT date_format(date '1970-12-01', 'L'); 12
'MM'
或'LL'
:從 1 開始的年份月份號碼。 1-9 個月會新增零填補。> SELECT date_format(date '1970-1-01', 'LL'); 01 > SELECT date_format(date '1970-09-01', 'MM'); 09
'MMM'
:標準格式的簡短文字表示法。 月模式應該是日期模式的一部分,而不只是獨立月份的一部分,不同地區設定與獨立窗體之間沒有差異,例如英文。> SELECT date_format(date '1970-01-01', 'd MMM'); 1 Jan -- Passing a format pattern to to_csv() > SELECT to_csv(named_struct('date', date '1970-01-01'), map('dateFormat', 'dd MMM', 'locale', 'RU')); 01 янв.
'MMMM'
:標準格式的全文檢索月份表示法。 它用來剖析/格式化月份做為日期/時間戳的一部分。> SELECT date_format(date '1970-01-01', 'd MMMM'); 1 January -- Passing a format pttern to to_csv() > SELECT to_csv(named_struct('date', date '1970-01-01'), map('dateFormat', 'd MMMM', 'locale', 'RU')); 1 января
am-pm:這會輸出 am-pm-of-day。 模式字母計數必須是 1。
區域標識元(V):這會輸出顯示時區標識碼。 模式字母計數必須是 2。
區域名稱(z):這會輸出時區標識符的顯示文字名稱。 如果字母計數為一、二或三個,則簡短名稱會輸出。 如果字母計數為四,則完整名稱會輸出。 五個以上的字母將會失敗。
Offset X 和 x:這會根據圖樣字母數目來格式化位移。 一個字母只會輸出小時,例如 『+01』,除非分鐘不是零,在此情況下,分鐘也是輸出,例如 『+0130』。 兩個字母會輸出小時和分鐘,沒有冒號,例如 『+0130』。 三個字母會輸出小時和分鐘,冒號,例如 『+01:30』。 四個字母會輸出小時和分鐘和選擇性秒,沒有冒號,例如 『+013015』。 五個字母會輸出小時和分鐘和選擇性秒,冒號,例如 『+01:30:15』。 六個以上的字母將會失敗。 圖樣字母 'X' (大寫) 會在輸出位移為零時輸出 'Z',而模式字母 'x' (小寫) 則會輸出 '+00'、'+0000'或 '+00:00'。
Offset O:這會根據圖樣字母數目來格式化當地語系化位移。 一個字母會輸出本地化位移的簡短形式,也就是當地語系化位移文字,例如 'GMT',如果非零則為小時,則為選擇性的 2 位數分鐘和秒,以及冒號,例如 'GMT+8'。 四個字母會輸出完整格式,也就是當地語系化位移文字,例如 'GMT,具有 2 位數小時和分鐘字段、非零的選擇性第二個字段,以及冒號,例如 'GMT+08:00'。 任何其他字母計數都會失敗。
位移 Z:這會根據圖樣字母數目來格式化位移。 一、二或三個字母會輸出小時和分鐘,沒有冒號,例如 『+0130』。 當位移為零時,輸出為 『+0000』。 四個字母會輸出本地化位移的完整形式,相當於 Offset-O 的四個字母。 如果位移為零,則輸出是對應的當地語系化位移文字。 五個字母會輸出小時、分鐘,如果非零則為選擇性秒,則為冒號。 如果位移為零,則會輸出 'Z'。 六個以上的字母將會失敗。
選擇性區段開始和結束:使用
[]
來定義選擇性區段,而且可能巢狀。 在格式化期間,即使是在選擇性區段中,也會輸出所有有效的數據。 在剖析期間,剖析字串中可能會遺漏整個區段。 選擇性區段的[
開頭為 ,並結束使用]
(或在模式結尾處)。'E'、'F'、'q' 和 'Q' 的符號只能用於日期時間格式設定,例如
date_format
。 不允許用於日期時間剖析,例如to_timestamp
。