印刷      PDFバージョンのオンラインヘルプを開く


前のトピック

次のトピック

カレンダーの日時関数

カレンダーの日時関数は、日付、時刻、およびタイムスタンプのデータ型のデータを処理します。タイムスタンプのデータ型は、日付と時刻の組み合わせです。

すべての日付関数はISO 8601に準拠しています。木曜日を含む最初の完全な週がその年の最初の週となるため、このことは、Week_Of_YearおよびWeek_Of_Quarterなどの関数に特に影響します。日付関数の計算方法についての詳細は、ISO 8601規格を調べてください。

Current_Date

現在の日付を返します。日付はコンピュータで決定されます。この値には時刻の要素は含まれません。

構文:

CURRENT_DATE

Current_Time

現在の時刻を返します。時刻はコンピュータで決定されます。値に日付コンポーネントは含まれていません。

注:この関数は、レポートの実行時に現在の時刻を取得します。この関数を分析サブジェクトエリアで使用すると、レポートがキャッシュされなくなり、パフォーマンスの低下を防ぐことができます。

構文:

CURRENT_TIME (n)

説明:

n

表示する秒の小数点以下の桁数を表す任意の整数。この引数は省略可能です。引数の指定がない場合は、デフォルトの桁数で返されます。

Current_TimeStamp

現在の日付/タイムスタンプを返します。タイムスタンプはコンピュータで決定されます。

注:この関数は、レポートの実行時に現在の時刻を取得します。この関数を分析サブジェクトエリアで使用すると、レポートがキャッシュされなくなり、パフォーマンスの低下を防ぐことができます。

構文:

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は深夜0時を表し、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

計算の基になるタイムスタンプ。

integer-expression またはtimestamp-expression にNULL 値を指定すると、戻り値がNULL 値になります。

最も単純な状況では、この関数は指定した整数値(integer_expression)を、intervalの指定に基づいて、タイムスタンプの該当する単位に加算します。1週の加算は7日の加算に、1四半期の加算は3か月の加算に換算されます。負の整数値を指定すると、減算されます(時間が戻ります)。

指定された単位でオーバーフローが発生(たとえば、60秒、24時間、12か月を超えるなど)すると、それに応じた量を次の単位に加算する必要が生じます。たとえば、タイムスタンプの日付に加算すると、オーバーフローの処理に、(うるう年も含め)各月の日数が考慮されます。

タイムスタンプの月に対し加算する場合は、結果として算出されたタイムスタンプが有効な日付の値であるかが、TimestampAdd関数によって確認されます。たとえば、2000-05-31に1か月加算した場合、2000-06-31にはなりません。6月31日が存在しないためです。この場合、その月の最終日まで日付を戻します。この例では、2000-06-30です。

同様の問題が、うるう年の2月29日のタイムスタンプに、年を加算した場合にも発生します。加算後の年がうるう年ではない場合、日付が28に変更されます。

次に、TimestampAdd関数の例を示します。

次のコードでは、2000-02-27 14:30:00に3日加算した結果のタイムスタンプを求めています。2000年はうるう年のため、単一のタイムスタンプ2000-03-01 14:30:00が返されます。

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

次のコードでは、1999-07-31 0:0:0に7か月加算した結果を求めています。戻り値は、単一のタイムスタンプ2000-02-29 00:00:00です。この年の場合、2月が29日で終わるため、日付が31から減少している点に注意してください。

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

次のコードでは、2000-07-31 23:35:00に25分加算した結果を求めています。戻り値は、単一のタイムスタンプ2000-08-01 00:00:00です。オーバーフロー処理により、月の値まで変更されていることに注意してください。

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

TimeStampDiff

2 つのタイムスタンプの間隔を、指定した間隔単位の総数で返します。

構文:

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

2 つ目のタイムスタンプから引き算をするタイムスタンプ。

timestamp_expression2

2 つ目のタイムスタンプ。このタイムスタンプからtimestamp_expression1 が引かれて、差が求められます。

timestamp-expression パラメータがNULL 値の場合、戻り値がNULL 値になります。

この関数では、まず、指定したintervalパラメータに相当するタイムスタンプ単位が判断されます。たとえば、SQL_TSI_DAYは日付が単位となり、SQL_TSI_MONTHは月が単位となります。

次に、両方のタイムスタンプの、指定したintervalパラメータよりも上位の単位に注目し、それぞれのタイムスタンプの間隔総数を計算します。たとえば、指定したintervalが月単位である場合、月単位と、その年単位に12をかけた数値を加算して、それぞれのタイムスタンプの合計月数を計算します。

最後に、1番目のタイムスタンプの合計月数を2番目のタイムスタンプの合計月数から引きます。

日付の差を計算する場合は、両方のタイムスタンプ表現から時間値を切り捨て、日付値を引きます。

週の差を計算する場合は、日数で差を求め、それを7で割ってから切り上げます。

四半期の差を計算する場合は、月数で差を求め、それを3で割ってから切り上げます。

年の差を計算する場合は、月数で差を求め、それを12で割ってから切り上げます。

TimestampDiff 関数と結果の例

次のコードでは、1998-07-31 23:35:00と2000-04-01 14:24:00の日付の差を求めています。戻り値は610です。2000年がうるう年のため、日付が1日加算されていることに注意してください。

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)


公開日 2017 年 9 月 Copyright © 2005, 2017, Oracle. All rights reserved. Legal Notices.