日期時間模式(Databricks SQL)

在Databricks SQL中,有幾種常用的datetime使用場景:

模式表

Databricks SQL使用下表中的模式字母進行日期和時間戳解析和格式化:

象征

意義

演講

例子

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 '的數量]。對於格式化,分數長度將被填充為帶0的連續' S '的數量。Databricks SQL支持微秒級的datetime精度,它最多有6位有效數字,但可以在截斷超出部分的情況下解析納米級的datetime。

  • 年份:字母的數量決定了使用填充的最小字段寬度。如果字母數為2,則使用簡化的兩位數字形式。對於打印,它輸出最右邊的兩位數字。對於解析,這將使用2000的基值進行解析,結果是2000到2099(包括在內)之間的年份。如果字母的數量小於4(而不是2),那麼符號隻在負年份輸出。否則,當' G '不存在時,如果墊寬超過了,則輸出符號。7個或更多的信件會失敗。

  • 月:遵循數字/文字的規則。文本形式以字母-為基礎“米”表示“標準”形式,和“L”是“獨立”形式。這兩種形式隻是在某些語言中有所不同。例如,在俄語中,' Июль '是July的獨立形式,而' Июля '是標準形式。下麵是所有支持的模式字母的示例:

    • “米”“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
    • “嗯”:標準形式的簡短文本表示。月份模式應該是日期模式的一部分,而不僅僅是一個獨立的月份,除非是像英語中那樣在固定形式和獨立形式之間沒有區別的地區。

      >選擇date_format日期“1970-01-01”“d嗯”);11月--通過一個格式模式to_csv()>選擇to_csvnamed_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:輸出上午的時間。模式字母數必須為1。

  • 時區ID(V):輸出顯示時區ID。模式字母數必須為2。

  • 區域名稱(z):輸出時區ID的顯示文本名稱。如果字母數為1、2或3,則輸出短名稱。如果字母的數量為4,則輸出全名。五封或五封以上的信件會失敗。

  • 偏移量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 '。六封或六封以上的信件會失敗。

  • 可選部分start和end:使用[]定義一個可選的部分,可能是嵌套的。在格式化過程中,即使在可選部分中也會輸出所有有效數據。在解析過程中,解析的字符串中可能沒有整個部分。可選部分由最後使用(或在圖案的結尾)。

  • ' E ', ' F ', ' q '和' q '的符號隻能用於日期時間格式,例如:date_format.它們不允許用於日期時間解析,例如:to_timestamp