日期時間模式
適用於:Databricks SQL
Databricks Runtime
Azure Databricks 中的日期時間用法有幾個常見情境:
- CSV 和 JSON 資料源會使用模式字串來剖析和格式化日期時間內容。
- 與
STRING
和DATE
或TIMESTAMP
之間的轉換有關的日期時間函式。 例如:
圖案表
Azure Databricks 使用下表中的模式字母進行日期和時間剖析和格式設定:
符號 | 意義 | 簡報 | 範例 |
---|---|---|---|
G | 時代 | 文字 | 西元 |
y | 年 | 年 | 2020;20 |
D | 年中的某一天 | 數位(3) | 189 |
M/L | 年月 | 月份 | 7;07;七月;七月 |
d | 月中的某日 | 數位(3) | 28 |
Q/q | 季度 | 數字/文本 | 3; 03; Q3; 第三季 |
E | 星期幾 | 文本 | 週二;星期二 |
F | 在一個月中對齊的星期天 | 數字(1) | 3 |
a | 一天中的上下午 | 上午-下午 | 下午 |
小時 | 上下午時鐘小時(1-12) | 數字(2) | 12 |
K | 上午/下午 小時(0-11) | 數字(2) | 0 |
k | 24小時制時間(1-24) | 數字(2) | 0 |
H | 一天中的小時 (0-23) | 數字(2) | 0 |
m | 小時分鐘 | 數字(2) | 30 |
s | 分鐘秒 | 數字(2) | 55 |
S | 秒的小數部分 | 分數 | 978 |
V | 時區標識碼 | 區域ID | 美國/Los_Angeles;Z;-08:30 |
z | 時區名稱 | 區域名稱 | 太平洋標準時間;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 | 區域偏移量 | offset-x | +0000;-08;-0830;-08:30;-083015;-08:30:15; |
Z | 區域偏移量 | offset-Z | +0000;-0800;-08:00; |
‘ | 文字逸出 | 定界符 | |
‘’ | 單引號 | 逐字 | ‘ |
[ | 可選區段開始 | ||
] | 選擇性區段結束 |
模式字母的數量決定格式。
文字:文字樣式是根據所使用的圖樣字母數目來決定。 少於 4 個模式字母會使用簡短文字形式,通常是縮寫,例如星期一可能會縮寫為 “Mon”。 準確來說,4 個模式字母將使用完整名稱,通常是完整描述,例如,星期一會顯示為「星期一」。 5 個以上的字母輸入將會失敗。
Number(n):此處的 n 代表可以使用此日期時間模式類型的最大字母計數。 如果字母計數是一,則值會使用最少的位數且不填充來輸出。 否則,數位計數會作為輸出字段的寬度,並視需要以零填補值。
數位/文字:如果模式字母的計數是 3 或更大,請使用上述的文字規則。 否則,請使用上述數字規則。
分數:使用一或多個連續的
'S'
字元,例如SSSSSS
,來解析和格式化秒的分數。 為了解析,可接受的分數長度可以是 [1,連續 'S' 的數量]。 針對格式化,分數部分會以零填充,直到達到連續『S』的數目。 Azure Databricks 支援具有最多 6 個有效位數的微秒級精確度的日期時間,但可以剖析奈秒,並截斷多餘部分。年:字母的數量決定了使用填充的最小欄位寬度。 如果字母數量為 2,則會使用縮減的兩位字符形式。 若要列印,這會輸出最右邊的兩位數。 為了解析,這會使用 2000 的基值進行解析,因此結果為 2000 到 2099 年之間的年份。 如果字母計數少於四個(但不是等於兩個),符號只用在表示負年的情況。 否則,如果 『G』 不存在時超過面板寬度,則會輸出符號。 7 個以上的字母將會無效。
月份:它會遵循數字/文字的規則。 文字表單取決於字母 -
'M'
表示「標準」表單,而'L'
代表「獨立」表單。 這兩種形式只在某些特定語言中不同。 例如,在俄文中,'Июль' 是 7 月的獨立形式,而 'Июля' 是標準形式。 以下是所有支援的模式字母範例:'M'
或'L'
:從 1 開始的年份月份號碼。'M'
和'L'
之間沒有任何差異。 從 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:這會輸出一天中的上午或下午。 模式字母計數必須是 1。
區域標識(V):這將顯示時區 ID。 模式字母計數必須是 2。
區域名稱(z):這會輸出時區標識符的顯示文字名稱。 如果字母計數為一、二或三個,則簡短名稱會輸出。 如果字母計數為四,則完整名稱會輸出。 超過五個字母會失敗。
偏移量 X 和 x:這會根據圖樣字母的數目來格式化偏移量。 一個字母只會輸出小時,例如 『+01』,除非分鐘不是零,在此情況下,分鐘也是輸出,例如 『+0130』。 兩個字母會輸出小時和分鐘,沒有冒號,例如 『+0130』。 三個字母會輸出小時和分鐘,冒號,例如 『+01:30』。 四個字母會輸出小時和分鐘和選擇性秒,沒有冒號,例如 『+013015』。 五個字符會輸出小時和分鐘,以及可選的秒數,格式為加上冒號,例如 '+01:30:15'。 六個以上的字母將會失敗。 圖樣字母 'X' (大寫) 會在輸出位移為零時輸出 'Z',而模式字母 'x' (小寫) 則會輸出 '+00'、'+0000'或 '+00:00'。
偏移量 O:這根據模式字母的數量來格式化本地化偏移。 一個字母會輸出本地化時差的簡短形式,即當地語言化時差文字,例如「GMT」。沒有前導零的小時數字,當分鐘與秒數非零時,它們是選擇性顯示的 2 位數,並以冒號分隔。例如「GMT+8」。 四個字母會輸出完整形式,也就是本地化時區偏移文字,例如(例如 'GMT',帶有 2 位數的小時和分鐘欄位,若第二欄位非零則為可選,以及冒號),例如 'GMT+08:00'。 任何其他字母計數都會失敗。
位移 Z:這會根據圖樣字母數目來格式化位移。 一、二或三個字母會輸出小時和分鐘,沒有冒號,例如 『+0130』。 當位移為零時,輸出為 『+0000』。 四個字母會輸出本地化時區偏移的完整形式,相當於 Offset-O 的四個字母。 如果位移為零,則輸出是相應的本地化位移文本。 五個字母會輸出小時、分鐘,如果非零則為選擇性秒,則為冒號。 如果位移為零,則會輸出 'Z'。 六個以上的字母將會無效。
選擇性區段開始和結束:使用
[]
來定義選擇性區段,而且可能巢狀。 在格式化期間,即使是在選擇性區段中,也會輸出所有有效的數據。 在剖析期間,剖析字串中可能會遺漏整個區段。 選擇性區段由[
開始,並以]
結束(或在模式結尾處)。'E'、'F'、'q' 和 'Q' 的符號只能用於日期時間格式設定,例如
date_format
。 它們不允許用於日期時間解析,例如to_timestamp
。