日期與時間函數

日期和時間函數根據 DATEDATETIME 操控資料。

函數 範例 描述 語法

CURRENT_Date

CURRENT_DATE

傳回目前的日期。

日期由執行 Oracle BI 的系統決定。

CURRENT_DATE

CURRENT_TIME

CURRENT_TIME(3)

以指定的數字位數傳回目前的時間,例如 HH:MM:SS.SSS。

若未指定引數,此函數會傳回預設的數字位數。

CURRENT_TIME(expr)

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP(3)

以指定的數字位數傳回目前的日期/時戳。

CURRENT_TIMESTAMP(expr)

DAYNAME

DAYNAME(Order_Date)

傳回指定日期表示式的星期幾名稱。

DAYNAME(expr)

DAYOFMONTH

DAYOFMONTH(Order_Date)

傳回指定日期表示式之當月天次的數字。

DAYOFMONTH(expr)

DAYOFWEEK

DAYOFWEEK(Order_Date)

傳回 1 到 7 之間的數字,相對應於指定日期表示式的一週天次。例如,1 一律對應星期日、2 對應星期一,依此類推至星期六 (傳回 7)。

DAYOFWEEK(expr)

DAYOFYEAR

DAYOFYEAR(Order_Date)

傳回 1 到 366 之間的數字,相對應於指定日期表示式的當年天次。

DAYOFYEAR(expr)

DAY_OF_QUARTER

DAY_OF_QUARTER(Order_Date)

傳回 1 到 92 之間的數字,相對應於指定日期表示式的當季的天次。

DAY_OF_QUARTER(expr)

HOUR

HOUR(Order_Time)

傳回 0 到 23 之間的數字,相對應於指定時間表示式的小時。例如,0 對應早上 12 點,23 對應晚上 11 點。

HOUR(expr)

MINUTE

MINUTE(Order_Time)

傳回 0 到 59 之間的數字,相對應於指定時間表示式的分鐘。

MINUTE(expr)

MONTH

MONTH(Order_Time)

傳回 1 到 12 之間的數字,相對應於指定日期表示式的月份。

MONTH(expr)

MONTHNAME

MONTHNAME(Order_Time)

傳回指定日期表示式之月份的名稱。

MONTHNAME(expr)

MONTH_OF_QUARTER

MONTH_OF_QUARTER(Order_Date)

傳回 1 到 3 之間的數字,相對應於指定日期表示式的當季月份。

MONTH_OF_QUARTER(expr)

NOW

NOW()

傳回目前的時戳。NOW 函數等同於 CURRENT_TIMESTAMP 函數。

NOW()

QUARTER_OF_YEAR

QUARTER_OF_YEAR(Order_Date)

傳回 1 到 4 之間的數字,相對應於指定日期表示式的當年季別。

QUARTER_OF_YEAR(expr)

SECOND

SECOND(Order_Time)

傳回 0 到 59 之間的數字,相對應於指定時間表示式的秒鐘。

SECOND(expr)

TIMESTAMPADD

TIMESTAMPADD(SQL_TSI_MONTH, 12,Time."Order Date")

在時戳加上指定的間隔次數,並傳回單一時戳。

間隔選項包括:SQL_TSI_SECONDSQL_TSI_MINUTESQL_TSI_HOURSQL_TSI_DAYSQL_TSI_WEEKSQL_TSI_MONTHSQL_TSI_QUARTERSQL_TSI_YEAR

TIMESTAMPADD(interval, expr, timestamp)

TIMESTAMPDIFF

TIMESTAMPDIFF(SQL_TSI_MONTH, Time."Order Date",CURRENT_DATE)

傳回兩個時戳之間的指定間隔總數。

使用與 TIMESTAMPADD 相同的間隔。

TIMESTAMPDIFF(interval, expr, timestamp2)

WEEK_OF_QUARTER

WEEK_OF_QUARTER(Order_Date)

傳回 1 到 13 之間的數字,相對應於指定日期表示式的當季週別。

WEEK_OF_QUARTER(expr)

WEEK_OF_YEAR

WEEK_OF_YEAR(Order_Date)

傳回 1 到 53 之間的數字,相對應於指定日期表示式的當年週別。

WEEK_OF_YEAR(expr)

YEAR

YEAR(Order_Date)

傳回指定日期表示式的年度。

YEAR(expr)

使用日期函數的秘訣

以下是在工作簿中使用日期函數計算會計期間、將字串轉換為日期、以特定時區顯示日期與時間以及計算一段時間的差異時,取得最佳結果的一些秘訣。

計算會計年度、季別和月份

主題區域一般都有時間維度,因此您可以使用預先設定的期間,例如會計季別、會計月份和會計週別。如果您只有日期欄位,那麼您便可使用日期函數自行計算這些期間。

以下範例計算會計季別:

'FY'||cast(YEAR(TIMESTAMPADD(SQL_TSI_MONTH, 7,<date field>)) as char)||'Q'||cast(QUARTER(TIMESTAMPADD(SQL_TSI_MONTH, 7,<same date field>)) as char)

以下範例計算會計年度與月份:

'FY'||cast(YEAR(TIMESTAMPADD(SQL_TSI_MONTH, 7,<date field>)) as char)||cast(MONTHNAME(<same date field>) as char)

附註

  • || 用於將值串連在一起。
  • cast (xxx(date) as char) 會擷取日期欄位的某個部分。
  • TIMESTAMPADD 會在日期增加 (或減去) 期間。本範例使用參數值 SQL_TSI_MONTH 增加月份。

以上的計算式在表格中可正常運作,但在篩選中使用時,傳回值之間的間距看起來可能會有點奇怪。在此情況下,請參考以下範例,使用更清晰但複雜的計算式:

'FY'||evaluate ('to_char(%1,%2)'as char,(EVALUATE('add_months(%1,%2)' as date,<date field>,7)),'YY')||'-Q'||evaluate ('to_char(%1,%2)'as char,(EVALUATE('add_months(%1,%2)' as date,<same date field>,7)),'Q')
'FY'||evaluate ('to_char(%1,%2)'as char,(EVALUATE('add_months(%1,%2)' as date,<date field>,7)),'YY')||'-'||evaluate ('to_char(%1,%2)'as char,<same date field>,'MON')

將字串轉換為日期

Oracle Analytics 會分析您的資料,並提供擷取及轉換日期的增強建議。如果您需要自行將字串轉換為日期,請參考以下提示。
  • 在工作簿設計工具中,瀏覽至資料窗格中要轉換的資料欄,對其按一下滑鼠右鍵並選取轉換為日期。設定日期,然後按一下新增步驟

  • 在工作簿設計工具中,瀏覽至資料窗格中要轉換的資料欄,對其按一下滑鼠右鍵並選取編輯。設定日期,然後按一下新增步驟

    在包含資料欄名稱 (以藍色顯示) 的文字方塊中,於資料欄名稱前插入 To_DateTime(,然後在資料欄名稱後加上要使用的日期格式,後面接著 ),然後按一下新增步驟
    以下為 GUID-ADBD035B-A62A-4DED-8768-553365BAABFE-default.png 的說明
    .png

    使用「編輯」選項建立日期轉換函數時,您也可以使用 Allow_Variable_Digits 處理包含一位數字或二位數字的資料欄值,並使用 Null_On_Error 引數捨棄不符合所需樣式的資料列。另請參閱 REPLACE 和 CAST,瞭解如何使用替代方式處理不符合所需樣式的資料。

    請使用 To_DateTime() 的替代項 CAST(),變更值的資料類型。例如,CAST(SalesDate AS DATE)

    此外,請使用取代選項。在工作簿設計工具中,瀏覽至資料窗格中要轉換的資料欄,對其按一下滑鼠右鍵並選取取代。設定想要的取代類型,然後按一下新增步驟

以特定時區顯示日期與時間欄位

請在資料庫中將 NEW_TIME 函數與 EVALUATE 搭配使用。例如:

evaluate ('new_time(%1,%2,%3)' as char, "DV - Pipeline and Forecast"."Opportunity"."Last Updated Date",'GMT','AST')

確定日期欄位包含時間元件。

計算一段時間的差異

若要以數字和百分比顯示現在與昨天之間的差異,請參考以下範例來建立計算式:
  • 計算到昨天為止的計量:filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))
  • 計算差異值:Measure - filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))
  • 計算差異百分比:1-(filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))/Measure 以百分比顯示

附註

  • 這些範例使用 SQL_TSI_DAY,但您也可以選擇使用 WEEK 和 MONTH (逐週和逐月)。
  • 這些範例適用於一般行事曆或自然曆。如果需有會計月份和季別,請在計算式中改用儲存區域變數,而不要使用 TIMESTAMPADD。或者,將此與計算會計年度、季別和月份提示結合使用。
  • 部分主題區域包括預先計算的「上一 X」計量,例如 PY(上一年)、PQ(上一季),您可以使用這些計量來計算一段時間的差異。
  • 或者,您可以使用 TIME SERIES 函數:AGO、PERIODROLLING 和 TODATE。請參閱時間序列函數