日期時間模式

適用于: check marked yes Databricks SQL check marked yes Databricks Runtime

Azure Databricks 中的日期時間使用量有數個常見案例:

模式資料表

Azure Databricks 使用下表中的模式字母進行日期和時間剖析和格式設定:

符號 意義 呈現方式 範例
G 時代 text 廣告;Anno Domini
y year year 2020;20
D 一年中的一天 數位(3) 189
M/L 年月 個月 7;07;七月;七月
月日 數位(3) 28
Q/q 年四分之一 數位/文字 3;03;Q3;第三季
E 一周中的一天 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;
' 文字逸出 分隔符號
'' 單引號 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