Datetime模式
適用於:磚的SQL磚運行時
在Databricks中使用datetime有幾個常見的場景:
CSV和JSON數據源使用模式字符串來解析和格式化日期時間內容。
與轉換相關的Datetime函數
字符串
來往於日期
或時間戳
.例如:
模式表
Databricks使用下表中的模式字母進行日期和時間戳解析和格式化:
象征 |
意義 |
演講 |
例子 |
---|---|---|---|
G |
時代 |
文本 |
廣告;公元 |
y |
一年 |
一年 |
2020;20. |
D |
day-of-year |
(3)數量 |
189 |
M / L |
month-of-year |
月 |
7;07年;7月;7月 |
d |
月的日期 |
(3)數量 |
28 |
Q /問 |
quarter-of-year |
數字/文本 |
3;03;第三季度;第三季度的 |
E |
一周中的第幾天 |
文本 |
星期二;周二 |
F |
每月的星期幾 |
數量(1) |
3. |
一個 |
am-pm-of-day |
am-pm |
點 |
h |
clock-hour-of-am-pm (1 - 12) |
(2)數量 |
12 |
K |
hour-of-am-pm(劃分) |
(2)數量 |
0 |
k |
clock-hour-of-day (24) |
(2)數量 |
0 |
H |
hour-of-day (0-23) |
(2)數量 |
0 |
米 |
minute-of-hour |
(2)數量 |
30. |
年代 |
second-of-minute |
(2)數量 |
55 |
年代 |
fraction-of-second |
分數 |
978 |
V |
時區ID |
zone-id |
美國/ Los_Angeles;Z;塔利班) |
z |
時區名稱 |
區域名稱 |
太平洋標準時間;太平洋標準時間 |
O |
本地化zone-offset |
offset-O |
格林尼治標準時間+ 8;格林尼治標準時間+喂飼;UTC-08:00; |
X |
zone-offset ' Z '為零 |
offset-X |
Z;-08;-0830;塔利班);-083015;08:30:15; |
x |
zone-offset |
offset-x |
+ 0000;-08;-0830;塔利班);-083015;08:30:15; |
Z |
zone-offset |
offset-Z |
+ 0000;-0800;喂飼; |
” |
文本轉義 |
分隔符 |
|
” |
單引號 |
文字 |
” |
[ |
可選的部分開始 |
||
] |
可選分段結束 |
模式字母的數量決定了格式。
文本:文本樣式是根據所使用的模式字母的數量來確定的。少於4個模式字母將使用短文本形式,通常是縮寫,例如day-of-week Monday可能輸出“Mon”。正好4個模式字母將使用全文形式,通常是完整的描述,例如,day-of-week Monday可能輸出“Monday”。5個或更多的字母將失敗。
Number(n):這裏的n表示可以使用這種類型的datetime模式的最大字母數。如果字母數為1,則使用最小數字數輸出該值,且不帶填充。否則,將使用數字計數作為輸出字段的寬度,並在必要時填充值0。
數字/文本:如果模式字母的數量為3或更大,則使用上麵的文本規則。否則,使用上麵的數字規則。
分數:使用一個或多個(最多9個)連續
“年代”
比如字符,嘶嘶
,來解析和格式化幾分之一秒。對於解析,可接受的分數長度可以是[1,連續' S '的數量]。對於格式化,分數長度將被填充為連續帶零的“S”的數量。Databricks支持微秒精度的datetime,它有多達6位有效數字,但可以在截斷超過部分的情況下解析納秒。年份:字母的計數決定使用填充的最小字段寬度。如果字母數為2,則使用簡化的兩位數字形式。對於打印,它輸出最右邊的兩位數字。對於解析,這將使用基礎值2000進行解析,從而得到在2000到2099之間的年份。如果字母計數小於4(但不是2),則該符號僅在負年份輸出。否則,當' G '不存在時,如果超出了襯墊寬度,則輸出符號。7個或更多的字母將失敗。
月:遵循數字/文本的規則。文本形式取決於字母-
“米”
表示“標準”形式,和“L”
是“獨立”形式。這兩種形式隻是在某些語言中有所不同。例如,在俄語中,' Июль '是七月的獨立形式,' Июля '是標準形式。下麵是所有支持的模式字母的示例:“米”
或“L”
:從1開始的一年中的月號。兩者之間沒有區別“米”
而且“L”
.從1到9的月份沒有填充。>選擇date_format(日期“1970-01-01”,“米”);1>選擇date_format(日期“1970-12-01”,“L”);12
“毫米”
或“會”
:從1開始的一年中的月號。第1-9個月添加零填充。>選擇date_format(日期“1970-1-01”,“會”);01>選擇date_format(日期“1970-09-01”,“毫米”);09
“嗯”
標準形式的簡短文本表示。月份模式應該是日期模式的一部分,而不僅僅是一個獨立的月份,除了在英語中stand和獨立形式之間沒有區別的地區。>選擇date_format(日期“1970-01-01”,“d嗯”);11月--通過一個格式模式來to_csv()>選擇to_csv(named_struct(“日期”,日期“1970-01-01”),地圖(“dateFormat”,“dd嗯”,“場所”,“俄羅斯”));01янв.
“嗯”
:以標準形式完整的文本月份表示。它用於解析/格式化月份作為日期/時間戳的一部分。> SELECT date_format(date '1970-01-01', 'd MMMM');1月1日—傳遞格式pttern到to_csv() > SELECT to_csv(named_struct('date', date' 1970-01-01'), map('dateFormat', 'd MMMM', 'locale', 'RU'));1января
am-pm:輸出一天的am-pm。模式字母數必須為1。
時區ID(V):輸出顯示時區ID。模式字母數必須為2。
時區名稱(z):輸出時區ID的顯示文本名稱。如果字母數為1、2或3,則輸出短名稱。如果字母計數為4,則輸出全名。5個或更多的字母將失敗。
偏移量X和X:根據模式字母的數量格式化偏移量。一個字母隻輸出小時,如' +01 ',除非分鍾不為零,在這種情況下也輸出分鍾,如' +0130 '。兩個字母輸出小時和分鍾,不帶冒號,例如' +0130 '。三個字母輸出小時和分鍾,帶冒號,例如' +01:30 '。四個字母輸出小時、分鍾和可選的秒,不帶冒號,例如' +013015 '。五個字母輸出小時、分鍾和可選的秒,帶冒號,例如' +01:30:15 '。6個或6個以上的字母將失敗。當要輸出的偏移量為零時,模式字母' X '(大寫)將輸出' Z ',而模式字母' X '(小寫)將輸出' +00 ',' +0000 ',或' +00:00 '。
偏移量O:根據模式字母的數量格式化局部偏移量。一個字母輸出本地化偏移量的縮寫形式,這是本地化偏移量文本,例如' GMT ',小時不帶前導零,如果非零則可選2位分鍾和秒,以及冒號,例如' GMT+8 '。四個字母輸出完整的表單,這是本地化的偏移文本,例如' GMT,帶有2位小時和分鍾字段,如果非零則可選第二個字段,以及冒號,例如' GMT+08:00 '。任何其他計數的字母都將失敗。
偏移量Z:根據模式字母的數量格式化偏移量。1、2或3個字母輸出小時和分鍾,不帶冒號,例如' +0130 '。當偏移量為零時,輸出為' +0000 '。四個字母輸出本地化偏移量的完整形式,相當於offset - o的四個字母。如果偏移量為零,則輸出為相應的本地化偏移文本。5個字母輸出小時、分鍾,如果非零則可選秒,帶冒號。如果偏移量為零,則輸出' Z '。6個或6個以上的字母將失敗。
可選部分開始和結束:使用
[]
定義一個可選的部分,可能是嵌套的。在格式化期間,所有有效數據都將輸出,即使它位於可選部分。在解析過程中,所解析的字符串中可能缺少整個部分。一個可選的節由[
並最終使用]
(或者在圖案的末尾)。' E ', ' F ', ' q '和' q '的符號隻能用於日期時間格式,例如:
date_format
.它們不允許用於日期時間解析,例如。to_timestamp
.