DATEFORMAT 函式

依據指定的日期格式,對一組指定的日期時間值執行格式化。來源值可以是含有日期時間值的資料欄參照。
  • 如果來源日期時間值不含適用於這個函式的有效輸入,則會傳回遺漏值。
  • Cloud Dataprep by TRIFACTA® 支援日期時間欄位的各種格式。如需進一步瞭解支援的日期格式,請參閱日期時間資料類型
  • 您可以透過轉換頁面探索可用的日期時間格式。在資料欄的類型下拉式選單中,選取 [日期/時間]。然後,選取格式設定類別。您可以在顯示的下拉式選單中選取特定格式。此轉換步驟新增至方案後,您就可以編輯步驟,查看如何在 Wrangle 中指定格式。

若要進一步瞭解數字類型格式設定,請參閱 NUMFORMAT 函式

基本用法

derive type:single value: DATEFORMAT(MyDate, 'yyyy-MM-dd') as: 'dateformat_MyDate'

輸出:產生新的資料欄,其中含有 MyDate 資料欄中轉換成年-月-日格式的有效日期值。

語法

derive type:single value:DATEFORMAT(Datetime_col, date_format_string)

引數是否必要?資料類型說明
Datetime_col日期時間待設定所含值格式的資料欄名稱
date_format_string字串字串文字,用以識別值要套用至值的日期格式

若要進一步瞭解語法標準,請參閱語言文件語法附註

datetime_col

待設定所含日期資料格式的資料欄名稱

  • 若系統在來源資料中找不到這個函式的值,則會導致輸出產生遺漏值。
  • 不支援多個資料欄和萬用字元。

使用須知:

是否必要?資料類型示例值
日期時間myDate

date_format_string

字串值,表示輸入值待套用的日期格式。

Cloud Dataprep by TRIFACTA 支援 Java 格式設定字串,但有一些例外情況。

附註:如果平台無法識別日期格式字串,其所產生的結果會以字串值寫入。

如需進一步瞭解支援的格式,請參閱日期時間資料類型

  • 若系統在來源資料中找不到這個函式的值,則會導致輸出產生遺漏值。
  • 不支援多個資料欄和萬用字元。

使用須知:

是否必要?資料類型示例值
字串'MM/dd/yyyy'

範例

範例 - 日期值格式設定

此範例說明幾種疊加異質日期值的方法,包括使用 DATEFORMAT 函式。

來源:

您的資料集含有下列格式混亂的日期值:

MyDate
2/1/00 9:20
4/5/10 11:25
6/7/99 22:00
12/20/1894 15:45:00
13/7/1999 22:00:00

轉換:

將此資料載入應用程式時,系統無法立即將它辨識為日期時間資料欄,因為資料變化的複雜性讓系統無法輕易決定適當的日期格式。前三列的資料格式好像一致,但另外兩列的格式有問題。

您可以試著使用符合前三列的格式,將資料欄變更為日期時間類型。您可以透過類型下拉式選單來選取適當的格式。預覽時,轉換應如下所示:

附註:請勿在此時新增這個轉換。它只能用來檢查對資料品質造成的影響。

settype col: MyDate type: 'Datetime','mm-dd-yy hh:mm:ss','mm*dd*yy*HH:MM'

重新格式化資料欄時,您應該會注意到資料欄中的最後兩個值不相符。在資料欄直方圖中,您可以看到第三列的日期範圍包含 1999 日期,如果這是有效日期,則最後一列應該也有效。

1894 值似乎是離群值,可以移除。

delete row: MATCHES([MyDate], `12/20/1894`)

至於剩餘含有 1999 值的資料列,您可以刪除該列,或使用下列轉換指令,使該列的格式與其他資料列相符。請使用下列轉換指令,將 13 月份值變更為 12

replace col: MyDate on: `13/` with: '12\/' global: true

下列兩個轉換指令可完成清理步驟:

replace col: MyDate on: `/1999` with: '\/99' global: true

replace col: MyDate on: `:#+:00` with: ':00' global: true

如果套用原始的格式設定步驟,所有日期均有效:

settype col: MyDate type: 'Datetime','mm-dd-yy hh:mm:ss','mm*dd*yy*HH:MM'

現在,可以視需要使用 dateformat 函式來格式化日期時間資料欄。下列步驟會產生新的資料欄,其中含有單一數字值的年、月、日資訊:

derive type:single value:DATEFORMAT(MyDate, 'yyyyMMdd')

結果:

最終的資料集應如下所示:

MyDatedateformat_MyDate
2/1/00 9:2020000201
4/5/10 11:2520100405
6/7/99 22:0019990607
12/7/99 22:0019991207

範例 - 其他日期格式設定變化

說明Timestamp 資料欄轉換指令newTimestamp 資料欄
數字格式日期 (以年開頭)

2/15/16 13:26:58.123

3/12/99 2:45:21.456

11/21/11 23:02:18.000

derive type:single value:DATEFORMAT(Timestamp,'yyyy-MM-dd') as:'newTimestamp'

2016-02-15

1999-03-12

2011-11-21

數字格式日期 (美式)

2/15/16 13:26:58.123

3/12/99 2:45:21.456

11/21/11 23:02:18.000

derive type:single value:DATEFORMAT(Timestamp,'M/d/yy') as:'newTimestamp'

2/15/16

3/12/99

11/21/11

完整寫入的日期

2/15/16 13:26:58.123

3/12/99 2:45:21.456

11/21/11 23:02:18.000

derive type:single value:DATEFORMAT(Timestamp,'MMMM dd, yyyy') as:'newTimestamp'

February 15, 2016

March 12, 1999

November 21, 2011

縮寫日期
(包含縮寫的
星期別)

2/15/16 13:26:58.123

3/12/99 2:45:21.456

11/21/11 23:02:18.000

derive type:single value:DATEFORMAT(Timestamp,'EEE MMM dd, yyyy') as:'newTimestamp'

Mon Feb 15, 2016

Fri Mar 12, 1999

Mon Nov 21, 2011

完整的 24 小時制

2/15/16 13:26:58.123

3/12/99 2:45:21.456

11/21/11 23:02:18.000

derive type:single value:DATEFORMAT(Timestamp,'HH:mm:ss.SSS') as:'newTimestamp'

13:26:58.123

2:45:21.456

23:02:18.000

12 小時制 (含 AM/PM 標記)

2/15/16 13:26:58.123

3/12/99 2:45:21.456

11/21/11 23:02:18.000

derive type:single value:DATEFORMAT(Timestamp,'h:mm:ss a') as:'newTimestamp'

附註:在此函式中,使用小寫的小時指標 (hhh) 時,需要使用 AM/PM 指標 (a)。

1:26:58 PM

2:45:21 AM

11:02:18 PM

如需進一步瞭解支援的日期格式,請參閱日期時間資料類型

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Google Cloud Dataprep 說明文件
需要協助嗎?請前往我們的支援網頁