CETUS 中文站
你的位置:CETUS 中文站 > ENA中文网 > 日期函式
日期函式
发布日期:2025-01-04 16:06    点击次数:174
日期是許多資料來源中的常見元素。如果欄位包含可識別的日期,它將具有日期或日期時間資料類型。在視覺化項中使用日期欄位時,它們將獲得一組特殊的功能,包括自動日期層次結構向下鑽取、特定於日期的過濾器選項和專門的日期格式選項。在計算中使用日期通常需要使用具體日期函數。熟悉其他日期概念日期函式有時會引用特定於日期的元素,包括 date_part 參數、可選 [start_of_week] 參數和日期常值 (#)。這些將在本主題的末尾更詳細地介紹。還有其他幾個可能感興趣但不屬於日期函式的主題:格式化日期在視覺化項中的顯示方式:自訂日期格式有關詳情,請參閱資料來源的日期屬性使用會計日期:會計日期使用 ISO-8601 日曆: ISO-8601 以週為基準的日曆提示:您的欄位是否已被識別為日期(其資料窗格含日期圖示)?以及您是否正在嘗試控制其在視覺效果中的顯示方式?您可能需要對其設定格式而不是使用日期函數。請參閱自訂日期格式 以及使用日期欄位的相關主題。您可以使用此頁面中的日期函數操作日期計算字段,而不是設定其顯示格式。Tableau 提供的日期函數DATE將字串和數字運算式轉換為日期的類型轉換函式,只要它們是可識別的格式。語法DATE(expression)輸出日期定義在指定數字、字串或日期 <expression> 的情況下傳回日期。範例DATE([Employee Start Date])DATE("September 22, 2018") DATE("9/22/2018")DATE(#2018-09-22 14:52#)說明與 DATEPARSE 不同,不需要提供模式,因為 DATE 會自動識別許多標準日期格式。但是,如果 DATE 無法識別輸入,請嘗試使用 DATEPARSE 並指定格式。MAKEDATE 是另一個類似的函式,但 MAKEDATE 需要輸入年、月和日的數值。DATEADD將指定數量的日期部分(月、日等)添加到開始日期。語法DATEADD(date_part, interval, date)輸出日期定義傳回新增 <interval> 至該日期指定 <date_part> 的 <date>。例如,將開始日期新增三個月或 12 天。範例將所有到期日期推遲一週DATEADD('week', 1, [due date])在 2021 年 2 月 20 日的基礎上增加 280 天DATEADD('day', 280, #2/20/21#) = #November 27, 2021#說明支援 ISO 8601 日期。DATEDIFF傳回兩個日期之間的日期部分數(週、年等)。語法DATEDIFF(date_part, date1, date2, [start_of_week])輸出整數定義返回 <date1> 與 <date2n> 之差(以 <date_part> 的單位表示)。例如,減去某人進入和離開樂隊的日期,以查看他們留在樂隊中的時間。範例1986 年 3 月 25 日至 2021 年 2 月 20 日之間的天數DATEDIFF('day', #3/25/1986#, #2/20/2021#) = 12,751一個人在樂隊里呆了多少個月DATEDIFF('month', [date joined band], [date left band])說明支援 ISO 8601 日期。DATENAME將指定日期部分的名稱作為離散字串傳回。語法DATENAME(date_part, date, [start_of_week])輸出字串定義以字串的形式返回 <date> 的 <date_part>。範例DATENAME('year', #3/25/1986#) = "1986"DATENAME('month', #1986-03-25#) = "March"說明支援 ISO 8601 日期。DATEPART 是非常相似的計算,它將指定日期部分的值作為連續整數傳回。DATEPART 可以更快,因為它是數字運算。透過變更計算結果的屬性(維度或度量、連續或離散)和日期格式,可以將 DATEPART 和 DATENAME 的結果格式設定為相同。DATEPARSE 是反函數,它會接受字串值並將其格式化為日期。DATEPARSE將特定格式的字串作為日期傳回。語法DATEPARSE(date_format, date_string)輸出日期定義<date_format> 引數會描述 <date_string> 欄位的排列方式。由於字串欄位的排序方式可以多種多樣,因此 <date_format> 必須完全符合。有關完整詮釋,請參閱將欄位轉換為日期欄位(連結在新視窗開啟)。範例DATEPARSE('yyyy-MM-dd', "1986-03-25") = #March 25, 1986#說明DATE 是一個類似的函數,可以自動識別許多標準日期格式。如果 DATE 無法識別輸入模式,則 DATEPARSE 可能是更好的選擇。MAKEDATE 是另一個類似的函式,但 MAKEDATE 需要輸入年、月和日的數值。將日期分開並傳回其部分值的反函數是 DATEPART(整數輸出)和 DATENAME(字串輸出)。資料庫限制DATEPARSE 可透過以下連接器獲得:非舊版 Excel 和文字檔連線、Amazon EMR Hadoop Hive、Cloudera Hadoop、Google 試算表、Hortonworks Hadoop Hive、MapR Hadoop Hive、MySQL、Oracle、PostgreSQL 以及 Tableau 資料擷取。有些格式可能並非適用於所有連線。Hive 變體不支援 DATEPARSE。僅支援 Denodo、Drill 和 Snowflake。DATEPART將指定日期部分的名稱作為整數傳回。語法DATEPART(date_part, date, [start_of_week])輸出整數定義以整數的形式返回 <date> 的 <date_part>。範例DATEPART('year', #1986-03-25#) = 1986DATEPART('month', #1986-03-25#) = 3說明支援 ISO 8601 日期。DATENAME 是非常相似的計算,它將指定日期部分的名稱作為離散字串傳回。DATEPART 可以更快,因為它是數字運算。透過變更欄位的屬性(維度或度量、連續或離散)和日期格式,可以將 DATEPART 和 DATENAME 的結果格式設定為相同。DATEPARSE 是反函數,它會接受字串值並將其格式化為日期。DATETRUNC這個函式可以被認為是日期四捨五入。它需要一個特定的日期並以所需的特異性傳回該日期的版本。因為每個日期都必須具有日、月、季度和年的值,所以 DATETRUNC 將值設定為每個日期部分的最小值,直到指定的日期部分。請參閱該範例了解更多資訊。語法DATETRUNC(date_part, date, [start_of_week])輸出日期定義按 <date_part> 指定的準確度截斷 <date>。此函式傳回新日期。例如,以月份層級截斷處於月份中間的日期時,此函式傳回當月的第一天。範例DATETRUNC('day', #9/22/2018#) = #9/22/2018#DATETRUNC('iso-week', #9/22/2018#) = #9/17/2018#(包含 2018 年 9 月 22 日的那一週中的星期一)DATETRUNC(quarter, #9/22/2018#) = #7/1/2018# (包含 9/22/2018 的那個季度的第一天)附註:如果是週和 ISO 週數,則使用 start_of_week。ISO 週數始終從星期一開始。對於此範例的地區設定,未指定 start_of_week 表示該週從星期日開始。說明支援 ISO 8601 日期。您不該使用 DATETRUNC 來停止在視覺效果中顯示日期時間欄位的時間。如果要截斷日期的顯示而不是捨入其準確性,請調整格式(連結在新視窗開啟)。例如,DATETRUNC('day', #5/17/2022 3:12:48 PM#) ,如果在視覺效果中格式化為顯示秒數,將顯示為 5/17/2022 12:00:00 AM。DAY以整數的形式傳回月份的天 (1-31)。語法DAY(date)輸出整數定義以整數的形式傳回給定 <date> 的天。範例Day(#September 22, 2018#) = 22說明另請參閱 WEEK、MONTH、季度、YEAR,以及 ISO 等值。ISDATE檢查字串是否是有效的日期格式。語法ISDATE(string)輸出布林值定義如果給定 <string> 為有效日期,則傳回 true。範例ISDATE(09/22/2018) = trueISDATE(22SEP18) = false說明必需的參數必須是字串。ISDATE 不能用於具有日期資料類型的欄位 - 計算將傳回錯誤。ISOQUARTER語法ISOQUARTER(date)輸出整數定義以整數形式傳回給定 <date> 基於 ISO8601 週的季度。範例ISOQUARTER(#1986-03-25#) = 1說明另請參閱 ISOWEEK、ISOWEEKDAY、ISOYEAR,以及非 ISO 等值。ISOWEEK語法ISOWEEK(date)輸出整數定義以整數形式傳回給定 <date> 基於 ISO8601 週的週。範例ISOWEEK(#1986-03-25#) = 13說明另請參閱 ISOWEEKDAY、ISOQUARTER、ISOYEAR,以及非 ISO 等值。ISOWEEKDAY語法ISOWEEKDAY(date)輸出整數定義以整數形式傳回給定 <date> 基於 ISO8601 週的平日。範例ISOWEEKDAY(#1986-03-25#) = 2說明另請參閱 ISOWEEK、ISOQUARTER、ISOYEAR,以及非 ISO 等值。ISOYEAR語法ISOYEAR(date)輸出整數定義以整數形式傳回給定 <date> 基於 ISO8601 週的年。範例ISOYEAR(#1986-03-25#) = 1,986說明另請參閱 ISOWEEK、ISOWEEKDAY、ISOQUARTER,以及非 ISO 等值。MAKEDATE語法MAKEDATE(year, month, day)輸出日期定義傳回一個依據指定 <year>、<monthg> 和 <day> 構造的日期值。範例MAKEDATE(1986,3,25) = #1986-03-25#說明請注意:輸入錯誤的值會被調整成日期,例如 MAKEDATE(2020,4,31) = May 1, 2020,而不是傳回沒有 4 月 31 日的錯誤。可用於 Tableau 擷取。檢查在其他資料來源中的可用性。MAKEDATE 需要日期部分的數字輸入。如果您的資料是一個應該是日期的字串,請嘗試使用 DATE 函數。DATE 自動識別許多標準日期格式。如果 DATE 無法識別輸入,請嘗試使用 DATEPARSE。MAKEDATETIME語法MAKEDATETIME(date, time)輸出日期時間定義傳回合併 <date> 和 <time> 的日期時間。日期可以是 date、datetime 或 string 類型。時間必須是 datetime。範例MAKEDATETIME("1899-12-30", #07:59:00#) = #12/30/1899 7:59:00 AM#MAKEDATETIME([Date], [Time]) = #1/1/2001 6:00:00 AM#說明附注:此功能僅適用於與 MySQL 相容的連線(對於 Tableau 為 MySQL 和 Amazon Aurora)。MAKETIME 為可用於 Tableau 資料擷取和其他一些資料來源的類似函數。MAKETIME語法MAKETIME(hour, minute, second)輸出日期時間定義傳回一個依據指定 <hour>、<minute> 和 <second> 構造的日期值。範例MAKETIME(14, 52, 40) = #1/1/1899 14:52:40#說明由於 Tableau 不支援時間資料類型,僅支援日期時間,因此輸出為日期時間。該欄位的日期部分將是 1/1/1899。與 MAKEDATETIME 類似的函數,僅適用於 MYSQL 相容的連線。MAX語法MAX(expression) 或 MAX(expr1, expr2)輸出與引數相同的資料類型,若引數的任何部分為 NULL,則為 NULL。定義傳回兩個引數(必須為相同資料類型)中的較大值。MAX 也可以作為彙總套用於單一欄位。範例MAX(4,7) = 7MAX(#3/25/1986#, #2/20/2021#) = #2/20/2021# MAX([Name]) = "Zander"說明對於字串MAX 通常是按字母順序排在最後的值。對於資料庫資料來源,MAX 字串值是資料庫為欄定義的排序順序中的最高值。對於日期對於日期,MAX 是最近的日期。如果 MAX 是彙總,結果不會有日期階層。如果 MAX 是比較,結果將保留日期階層。作為彙總MAX(expression) 為彙總函數,會傳回單一彙總結果。這在視覺效果中顯示為 AGG(expression)。作為比較MAX(expr1, expr2) 會比較兩個值,並傳回一個列層級值。另請參閱 MIN。MIN語法MIN(expression) 或 MIN(expr1, expr2)輸出與引數相同的資料類型,若引數的任何部分為 NULL,則為 NULL 。定義傳回兩個引數(必須為相同資料類型)的最小值。MIN 也可以作為彙總套用於單一欄位。範例MIN(4,7) = 4MIN(#3/25/1986#, #2/20/2021#) = #3/25/1986#MIN([Name]) = "Abebi"說明對於字串MIN 通常是按字母順序排列在最前面的值。對於資料庫資料來源,MIN 字串值是資料庫為欄定義的排序順序中的最低值。對於日期對於日期,MIN 是最早的日期。如果 MIN 是彙總,結果不會有日期階層。如果 MIN 是比較,結果將保留日期階層。作為彙總MIN(expression) 為彙總函數,會傳回單一彙總結果。這在視覺效果中顯示為 AGG(expression)。作為比較MIN(expr1, expr2) 會比較兩個值,並傳回一個列層級值。另請參閱 MAX。MONTH語法MONTH(date)輸出整數定義以整數的形式傳回給定 <date> 的月份。範例MONTH(#1986-03-25#) = 3說明另請參閱 DAY、WEEK、季度、YEAR,以及 ISO 等值NOW語法NOW()輸出日期時間定義傳回目前本機系統日期和時間。範例NOW() = 1986-03-25 1:08:21 PM說明NOW 沒有採用引數。另請參閱 TODAY,這是一個類似的計算,它傳回日期而不是日期時間。如果資料來源是即時連線,則係統日期和時間可能位於另一個時區。有關如何聯接資料的詳情,請參閱知識庫。季度語法QUARTER(date)輸出整數定義以整數的形式傳回給定 <date> 的季度。範例QUARTER(#1986-03-25#) = 1說明另請參閱 DAY、WEEK、MONTH、YEAR,以及 ISO 等值TODAY語法TODAY()輸出日期定義傳回目前本機系統日期。範例TODAY() = 1986-03-25說明TODAY 沒有採用引數。另請參閱 NOW,這是一個類似的計算,它傳回日期時間而不是日期。如果資料來源是即時連線,則係統日期可能位於另一個時區。有關如何聯接資料的詳情,請參閱知識庫。WEEK語法WEEK(date)輸出整數定義以整數的形式傳回給定 <date> 的週。範例WEEK(#1986-03-25#) = 13說明另請參閱 DAY、MONTH、季度、YEAR,以及 ISO 等值YEAR語法YEAR(date)輸出整數定義以整數的形式傳回給定 <date> 的年份。範例YEAR(#1986-03-25#) = 1,986說明另請參閱 DAY、WEEK、MONTH、季度,以及 ISO 等值date_part 引數Tableau 中的許多日期函數都採用引數 date_part,它是一個字串常數,告訴函數要考慮日期的哪一部分,例如日、週、季度等。可以使用的有效 date_part 值包括:date_part值'year'四位數年份'quarter'1-4'month'1-12 或「一月」、「二月」等'dayofyear'一年中的第幾天;1 月 1 日為 1、2 月 1 日為 32,依此類推'day'1-31'weekday'1-7 或「週日」、「週一」等'week'1-52'hour'0-23'minute'0-59'second'0-60'iso-year'4 位數 ISO 8601 年份'iso-quarter'1-4'iso-week'1-52,一週的開始始終是週一'iso-weekday'1-7,一週的開始始終是週一[start_of_week] 參數有些函式有可選參數 [start_of_week]。可使用 start_of_week 指定將哪一天視為一週的第一天,例如「星期日」或「星期一」。如果省略,一週的開始由資料來源確定。請參閱資料來源的日期屬性。參看以下範例,9 月 22 日是星期日,9 月 24 日是星期二。DATEDIFF 函式用於計算這些日期之間的週數。DATEDIFF('week', #2013-09-22#, #2013-09-24#, 'monday') = 1因為 start_of_week 是「星期一」,所以這些日期在不同的週內。DATEDIFF('week', #2013-09-22#, #2013-09-24#, 'sunday') = 0因為 start_of_week 是「星期日」,所以這些日期在同一週。日期常值 (#)範例通常在日期運算式中使用井號 (#)。這是日期常值,類似於對文本字串使用引號,它告訴 Tableau 符號內的值是日期。如果沒有日期常值,日期可能會被解釋為各種其他資料類型。例如:格式資料類型值'March 25, 1986'字串'March 25, 1986'#3/25/1986#Date(日期)#3/25/1986#03/25/1986浮動小數位數0.000060421986-03-25整數1,958March 25, 1986 無效如需更多資訊,請參閱文字運算式語法。建立日期計算練習使用 Superstore 樣本資料來源建立日期計算。在 Tableau Desktop 中,連線到 Tableau 附帶的 [Sample - Superstore] 已儲存資料來源。開啟工作表。從 [資料] 窗格中的 [維度] 下,將 [Order Date] (訂單日期)拖到 [列] 架。在 [列] 架上,按一下 [YEAR(Order Date)] 欄位上的加號圖示 (+)。[QUARTER(Order Date)] 將新增到 [列] 架,並且檢視將更新。在 [列] 架上,按一下 [QUARTER(Order Date)] 欄位上的加號圖示 (+),以下鑽到 [MONTH(Order Date)] 。選取 [分析] > [建立計算欄位]。在開啟的計算編輯器中,執行以下操作:將計算欄位命名為 [Quarter Date] (季度日期)。輸入以下公式:DATETRUNC('quarter', [Order Date])完成後,按一下 [確定]。新的日期計算將出現在 [資料] 窗格中的 [維度] 下。就像其他欄位一樣,您可以在一個或多個視覺效果中使用該欄位。從 [資料] 窗格中的 [維度] 下,將 [Quarter Date] (季度日期)拖到 [列] 架,並將其放在 [MONTH(Order Date)] 右側。視覺效果將更新為包含年份值。這是因為 Tableau 將日期資料累積到最高詳細層級。在 [列] 架上,以右鍵按一下 [YEAR(Quarter Date)] ,並選取 [精確日期] 。在 [列] 架上,再次以右鍵按一下 [YEAR(Quarter Date)] ,並選取 [離散] 。視覺效果將更新為包含表中每一列的準確季度日期。

上一篇:Rong Gu(顾荣)
下一篇:MOLI万站,正式上线

友情链接: