日期和時間函數根據 DATE
和 DATETIME
操控資料。
函數 | 範例 | 描述 | 語法 |
---|---|---|---|
CURRENT_Date |
|
傳回目前的日期。 日期由執行 Oracle BI 的系統決定。 |
|
CURRENT_TIME |
|
以指定的數字位數傳回目前的時間,例如 HH:MM:SS.SSS。 若未指定引數,此函數會傳回預設的數字位數。 |
|
CURRENT_TIMESTAMP |
|
以指定的數字位數傳回目前的日期/時戳。 |
|
DAYNAME |
|
傳回指定日期表示式的星期幾名稱。 |
|
DAYOFMONTH |
|
傳回指定日期表示式之當月天次的數字。 |
|
DAYOFWEEK |
|
傳回 1 到 7 之間的數字,相對應於指定日期表示式的一週天次。例如,1 一律對應星期日、2 對應星期一,依此類推至星期六 (傳回 7)。 |
|
DAYOFYEAR |
|
傳回 1 到 366 之間的數字,相對應於指定日期表示式的當年天次。 |
|
DAY_OF_QUARTER |
|
傳回 1 到 92 之間的數字,相對應於指定日期表示式的當季的天次。 |
|
HOUR |
|
傳回 0 到 23 之間的數字,相對應於指定時間表示式的小時。例如,0 對應早上 12 點,23 對應晚上 11 點。 |
|
MINUTE |
|
傳回 0 到 59 之間的數字,相對應於指定時間表示式的分鐘。 |
|
MONTH |
|
傳回 1 到 12 之間的數字,相對應於指定日期表示式的月份。 |
|
MONTHNAME |
|
傳回指定日期表示式之月份的名稱。 |
|
MONTH_OF_QUARTER |
|
傳回 1 到 3 之間的數字,相對應於指定日期表示式的當季月份。 |
|
NOW |
|
傳回目前的時戳。 |
|
QUARTER_OF_YEAR |
|
傳回 1 到 4 之間的數字,相對應於指定日期表示式的當年季別。 |
|
SECOND |
|
傳回 0 到 59 之間的數字,相對應於指定時間表示式的秒鐘。 |
|
TIMESTAMPADD |
|
在時戳加上指定的間隔次數,並傳回單一時戳。 間隔選項包括:SQL_TSI_SECOND、SQL_TSI_MINUTE、SQL_TSI_HOUR、SQL_TSI_DAY、SQL_TSI_WEEK、SQL_TSI_MONTH、SQL_TSI_QUARTER、SQL_TSI_YEAR |
|
TIMESTAMPDIFF |
|
傳回兩個時戳之間的指定間隔總數。 使用與 TIMESTAMPADD 相同的間隔。 |
|
WEEK_OF_QUARTER |
|
傳回 1 到 13 之間的數字,相對應於指定日期表示式的當季週別。 |
|
WEEK_OF_YEAR |
|
傳回 1 到 53 之間的數字,相對應於指定日期表示式的當年週別。 |
|
YEAR |
|
傳回指定日期表示式的年度。 |
|
以下是在工作簿中使用日期函數計算會計期間、將字串轉換為日期、以特定時區顯示日期與時間以及計算一段時間的差異時,取得最佳結果的一些秘訣。
計算會計年度、季別和月份:
主題區域一般都有時間維度,因此您可以使用預先設定的期間,例如會計季別、會計月份和會計週別。如果您只有日期欄位,那麼您便可使用日期函數自行計算這些期間。
以下範例計算會計季別:
'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')
將字串轉換為日期:
在包含資料欄名稱 (以藍色顯示) 的文字方塊中,於資料欄名稱前插入 To_DateTime(
,然後在資料欄名稱後加上要使用的日期格式,後面接著 )
,然後按一下新增步驟。
.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 (逐週和逐月)。