列印      開啟 PDF 版的線上說明


上一個主題

下一個主題

行事曆日期/時間函數

行事曆日期/時間函數會針對日期、時間,以及時間標記,操作資料類型中的資料(時間標記資料類型是日期和時間的組合)。

所有日期函數均符合 ISO 8601。這尤其會影響 Week_Of_Year 與 Week_Of_Quarter 此類函數,其年度的初始週別為包含星期四的第一個完整週別。如需如何計算日期函數的詳細資訊,請參考 ISO 8601 標準。

Current_Date

傳回目前的日期。日期取決於執行 Oracle CRM On Demand Answers 的系統。此值不包含時間元件。

語法:

CURRENT_DATE

Current_Time

傳回目前的時間。時間取決於執行 Oracle CRM On Demand Answers 的系統。此值不包含日期元件。

附註:這個函數會取得此報表執行當時的時間。配合「分析」主題範圍使用這個函數,可使報表不進行會降低效能的快取作業。

語法:

CURRENT_TIME (n)

其中:

n

任何整數,代表顯示小數秒的有效位數。引數是選擇性的;未指定引數時,此函數會傳回預設的有效位數。

Current_TimeStamp

傳回目前的日期/時間標記。時間標記取決於執行 Oracle CRM On Demand Answers 的系統。

附註:這個函數會取得此報表執行當時的時間。配合「分析」主題範圍使用這個函數,可使報表不進行會降低效能的快取作業。

語法:

CURRENT_TIMESTAMP (n)

其中:

n

任何整數,代表顯示小數秒的有效位數。引數是選擇性的;未指定引數時,此函數會傳回預設的有效位數。

Day_Of_Quarter

傳回對應到指定日期之季度那一天的數字 (介於 1 和 92 之間)。

語法:

DAY_OF_QUARTER (date_expression)

其中:

date_expression

評估為日期的任何運算式。

DayName

傳回指定日期之星期幾的名稱 (使用英文)。

語法:

DAYNAME (date_expression)

其中:

date_expression

評估為日期的任何運算式。

DayOfMonth

傳回對應到指定日期之月份那一天的數字。

語法:

DAYOFMONTH (date_expression)

其中:

date_expression

評估為日期的任何運算式。

DayOfWeek

傳回對應到指定日期之星期幾的數字 (介於 1 和 7 之間)。數字 1 會對應到星期日,而數字 7 則會對應到星期六。

語法:

DAYOFWEEK (date_expression)

其中:

date_expression

評估為日期的任何運算式。

DayOfYear

傳回對應到指定日期之年份那一天的數字 (介於 1 和 366 之間)。

語法:

DAYOFYEAR (date_expression)

其中:

date_expression

評估為日期的任何運算式。

Hour

傳回對應到指定時間之小時的數字 (介於 0 和 23 之間)。例如,0 會對應到上午 12 點,而 23 則會對應到下午 11 點。

語法:

HOUR (time_expression)

其中:

time_expression

評估為時間的任何運算式。

Minute

傳回對應到指定時間之分鐘的數字 (介於 0 和 59 之間)。

語法:

MINUTE (time_expression)

其中:

time_expression

評估為時間的任何運算式。

Month

傳回對應到指定日期之月份的數字 (介於 1 和 12 之間)。

語法:

MONTH (date_expression)

其中:

date_expression

評估為日期的任何運算式。

Month_Of_Quarter

傳回對應到指定日期之季度月份的數字 (介於 1 和 3 之間)。

語法:

MONTH_OF_QUARTER (date_expression)

其中:

date_expression

評估為日期的任何運算式。

MonthName

傳回指定日期之月份的名稱 (使用英文)。

語法:

MONTHNAME (date_expression)

其中:

date_expression

評估為日期的任何運算式。

Now

傳回目前的時間標記。NOW 函數相當於 CURRENT_TIMESTAMP 函數。

附註:這個函數會取得此報表執行當時的時間。配合「分析」主題範圍使用這個函數,可使報表不進行會降低效能的快取作業。

語法:

NOW ()

Quarter_Of_Year

傳回對應到指定日期之年份季度的數字 (介於 1 和 4 之間)。

語法:

QUARTER_OF_YEAR (date_expression)

其中:

date_expression

評估為日期的任何運算式。

Second

傳回對應到指定時間之秒數的數字 (介於 0 和 59 之間)。

語法:

SECOND (time_expression)

其中:

time_expression

評估為時間的任何運算式。

TimestampAdd

TimestampAdd 函數會將指定的間隔數加入到指定的時間標記。系統會傳回單一的時間標記。

語法:

TimestampAdd (interval、integer_expression、timestamp_expression)

其中:

interval

指定的間隔。有效值為:

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

integer_expression

評估為整數的任何運算式。這是要加入的間隔數。

timestamp_expression

在計算中,當做基礎使用的時間標記。

傳遞到此函數的 Null 整數運算式或 Null 時間標記運算式會導致 Null 傳回值。

在最簡單的情況下,此函數會根據間隔,僅將指定的間隔值 (integer_expression) 加入到適當的時間標記元件中。加入一週會解譯成加入七天,而加入一季會解譯成加入三個月。負整數值會導致減法 (及時返回)。

指定元件的溢位 (例如,超過 60 秒、24 小時、12 個月等等) 必須將適當的數量加入到下一個元件。例如,加入時間標記的天元件時,此函數會考慮溢位,並將特定月份的天數納入考量 (包括二月有 29 天的閏年)。

加入到時間標記的月元件時,此函數會確認所產生的時間標記對於天元件擁有足夠的天數。例如,將 1 個月加入到 2000-05-31 不會導致 2000-06-31,因為六月沒有 31 天。此函數將天元件減到該月份的最後一天,在此範例中,即為 2000-06-30。

加入到具有二月之月元件以及 29 (此即為閏年二月的最後一天) 之天元件的時間標記年元件時,會引發類似的問題。如果所產生的時間標記沒有落在閏年,此函數會將天元件減到 28。

以下是 TimestampAdd 函數的範例:

將 3 天加入到 2000-02-27 14:30:00 時,下列程式碼範例會要求所產生的時間標記。2000 年 2 月是閏年,因此,這會傳回單一時間標記 2000-03-01 14:30:00。

TimestampAdd(SQL_TSI_DAY, 3, TIMESTAMP‘2000-02-27 14:30:00’)

將 7 個月加入到 1999-07-31 0:0:0 時,下列程式碼範例會要求所產生的時間標記。這會傳回單一時間標記 2000-02-29 00:00:00。請注意,天元件會因為二月是較短的月份而減到 29。

TimestampAdd(SQL_TSI_MONTH, 7, TIMESTAMP‘1999-07-31 00:00:00’)

將 25 分鐘加入到 2000-07-31 23:35:00 時,下列程式碼範例會要求所產生的時間標記。這會傳回單一時間標記 2000-08-01 00:00:00。請注意透過月元件的溢位傳播。

TimestampAdd(SQL_TSI_MINUTE, 25, TIMESTAMP‘2000-07-31 23:35:00’)

TimeStampDiff

TimestampDiff 函數會傳回兩個時間標記之間的指定間隔總數。

語法:

TimestampDiff (interval、timestamp_expression1、timestamp_expression2)

其中:

interval

指定的間隔。有效值為:

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

timestamp_expression1

與第二個時間標記相減的時間標記。

timestamp_expression2

第二個 timestamp. timestamp_expression1 會與此時間標記相減以判斷落差。

傳遞到此函數的 Null 時間標記運算式參數會導致 Null 傳回值。

此函數會先判斷對應到指定間隔參數的時間標記元件。例如,SQL_TSI_DAY 會對應到天元件,而 SQL_TSI_MONTH 會對應到月元件。

接著,此函數會兩個時間標記中順序較高的元件,來計算每個時間標記的間隔總數。例如,如果指定的間隔對應到月元件,此函數會加入月元件,然後將年元件乘以 12,來計算每個時間標記的月份總數。

最後,此函數會從第二個時間標記的間隔總數減去第一個時間標記的間隔總數。

計算天數差異時,此函數會截斷來自時間標記運算式的時間值,然後減去日期值。

計算週的差異時,此函數會計算天數的差異,然後先除以 7 之後再四捨五入。

計算季的差異時,此函數會計算月的差異,然後先除以 3 之後再四捨五入。

計算年的差異時,此函數會計算月的差異,然後先除以 12 之後再四捨五入。

TimestampDiff 函數與結果範例

下列程式碼範例會要求時間標記 1998-07-31 23:35:00 和 2000-04-01 14:24:00 之間的天數差異。它會傳回值 610。請注意,2000 年的閏年會導致出現額外一天。

TimestampDIFF(SQL_TSI_DAY, TIMESTAMP‘1998-07-31 23:35:00’, TIMESTAMP‘2000-04-01 14:24:00’)

Week_Of_Quarter

傳回對應到指定日期之季度週數的數字 (介於 1 和 13 之間)。

語法:

WEEK_OF_QUARTER (date_expression)

其中:

date_expression

評估為日期的任何運算式。

Week_Of_Year

傳回對應到指定日期之年份週數的數字 (介於 1 和 53 之間)。

語法:

WEEK_OF_YEAR (date_expression)

其中:

date_expression

評估為日期的任何運算式。

年份

傳回指定日期的年份。

語法:

YEAR (date_expression)

其中:

date_expression

評估為日期的任何運算式。

範例:

YEAR (CURRENT_DATE)


2016年10月 Copyright © 2005, 2016, Oracle 及/或其關係機構。版權所有. Legal Notices.