会社等の組織には「会計年度」が決められています。会計年度はカレンダーとは別の開始日と終了日を持ちます。Oracle AI Database 26ai は会計年度を計算する関数が追加されました。
初期化パラメーター
会計年度の開始日は、初期化パラメーター calendar_fiscal_year_start で決定します。デフォルト値は空文字で、カレンダーと同じ日(1 月 1 日)を意味します。以下の例では、カレントのセッションの初期化パラメーター calendar_fiscal_year_start に 4 月 1 日を指定しています。
SQL> ALTER SESSION SET calendar_fiscal_year_start = '01-APR','DD-MON';
Session altered.
SYSDATE で返される日付が「2026 年 8 月 6 日」 で、初期化パラメーター calendar_fiscal_year_start に、「4月1日」を指定すると、現在の会計年度は「FY2027」になります。
| 計算日 | SQL | 出力 |
|---|---|---|
| 会計年度開始日 | SHOW PARAMETER calendar_fiscal_year_start | ARP-01 |
| サーバー日時 | SYSDATE | 2026-08-06 |
| カレンダー年 | CALENDAR_YEAR(SYSDATE) | 2026 |
| 会計年度 | FISCAL_YEAR(SYSDATE) | 2027 |
会計年度関連関数
Oracle AI Database 26ai には会計年度日付関連の関数が多数追加されました。
日付からの情報取得
指定された日付から、会計年、会計四半期、月、曜日、日の情報を取得する以下の関数が追加されました。
| 関数名 | 戻り値のデータ型 | 説明 | デフォルト・フォーマット |
|---|---|---|---|
| FISCAL_YEAR | VARCHAR2 | 年を返す | FY{YYYY} |
| FISCAL_QUARTER | VARCHAR2 | 四半期名を返す | Q{n}-FY{YYYY} |
| FISCAL_MONTH | VARCHAR2 | 月名を返す | {MON}-FY{YYYY} |
| FISCAL_WEEK | VARCHAR2 | 週番号を返す | W{n}-FY{YYYY} |
| FISCAL_DAY | VARCHAR2 | 日を返す | {DD}-{MON}-FY{YYYY} |
SQL> SELECT SYSDATE, FISCAL_YEAR(SYSDATE);
SYSDATE FISCAL_
--------- -------
06-AUG-26 FY2027
SQL> SELECT SYSDATE, FISCAL_QUARTER(SYSDATE);
SYSDATE FISCAL_QUA
--------- ----------
06-AUG-26 Q2-FY2027
SQL> SELECT SYSDATE, FISCAL_MONTH(SYSDATE);
SYSDATE FISCAL_MONTH(SYSDATE
--------- --------------------
06-AUG-26 AUG-FY2027
SQL> SELECT SYSDATE, FISCAL_WEEK(SYSDATE);
SYSDATE FISCAL_WEEK
--------- -----------
06-AUG-26 W19-FY2027
SQL> SELECT SYSDATE, FISCAL_DAY(SYSDATE);
SYSDATE FISCAL_DAY(SYSDATE)
--------- -----------------------
06-AUG-26 06-AUG-FY2027
FISCAL_MONTH 関数や、FISCAL_DAY の出力フォーマットは NLS 関連の初期化パラメーターで変化します。
SQL> ALTER SESSION SET nls_language='JAPANESE';
セッションが変更されました。
SQL> SELECT SYSDATE, FISCAL_MONTH(SYSDATE);
SYSDATE FISCAL_MONTH(SYSDATE
-------- --------------------
26-08-06 8月 -FY2026
初期化パラメーターだけでなく、関数にフォーマットを指定することもできます。その場合には会計年度開始日の指定が必要です。下記の例では会計年度開始が「4 月 1 日」で、今日が「8 月 6 日」であるため、会計年度としては 2027 年になっています。
SQL> SELECT SYSDATE, FISCAL_MONTH(SYSDATE, '2026-04-01', 'MON-YYYY', 'NLS_DATE_LANGUAGE=FRENCH');
SYSDATE FISCAL_MONTH(SYSDATE,'202
-------- -------------------------
26-08-06 AOÛT -2027
日付の追加関数
特定の日付に数値を加えた場合の日付を返す関数が追加されました。
| 関数名 | 戻り値のデータ型 | 説明 | デフォルト・フォーマット |
|---|---|---|---|
| FISCAL_ADD_YEARS | DATE | 追加した年を返す | {YYYY} |
| FISCAL_ADD_QUARTERS | DATE | 追加した四半期名を返す | Q{n}-{YYYY} |
| FISCAL_ADD_MONTHS | DATE | 追加した月名を返す | {MON}-{YYYY} |
| FISCAL_ADD_WEEKS | DATE | 追加した週番号を返す | W{n}-{YYYY} |
| FISCAL_ADD_DAYS | DATE | 追加した日を返す | {DD}-{MON}-{YYYY} |
SQL> ALTER SESSION SET nls_date_format='YYYY/MM/DD';
セッションが変更されました。
SQL> SELECT FISCAL_ADD_YEARS(SYSDATE, 1);
FISCAL_ADD
----------
2027/08/06
SQL> SELECT FISCAL_ADD_QUARTERS(SYSDATE, 2);
FISCAL_ADD
----------
2027/02/06
SQL> SELECT FISCAL_ADD_WEEKS(SYSDATE, 3);
FISCAL_ADD
----------
2026/08/27
SQL> SELECT FISCAL_ADD_DAYS(SYSDATE, 4);
FISCAL_ADD
----------
2026/08/10
追加する日にマイナスの値を指定すると、パラメーターで指定された日よりも過去の日付を取得できます。
SQL> SELECT SYSDATE, FISCAL_ADD_WEEKS(SYSDATE, -1);
SYSDATE FISCAL_ADD
---------- ----------
2026/08/06 2026/07/30
開始日と終了日
指定された期間の開始日と終了日を返す関数が追加されました。
| 関数名 | 戻り値のデータ型 | 説明 |
|---|---|---|
| FISCAL_YEAR_START_DATE | DATE | 年の開始日を返す |
| FISCAL_YEAR_END_DATE | DATE | 年の終了日を返す |
| FISCAL_QUARTER_START_DATE | DATE | 四半期の開始日を返す |
| FISCAL_QUARTER_END_DATE | DATE | 四半期名の開始日を返す |
| FISCAL_MONTH_START_DATE | DATE | 月の開始日を返す |
| FISCAL_MONTH_END_DATE | DATE | 月の開始日を返す |
| FISCAL_WEEK_START_DATE | DATE | 週の開始日を返す |
| FISCAL_WEEK_END_DATE | DATE | 週の終了日を返す |
下記の例では、会計年度の開始を「4 月 1 日」にしているため、開始・終了日が変化しています。
SQL> ALTER SESSION SET calendar_fiscal_year_start = '01-APR','DD-MON';
Session altered.
SQL> SELECT FISCAL_YEAR_START_DATE(SYSDATE), FISCAL_YEAR_END_DATE(SYSDATE);
FISCAL_YE FISCAL_YE
--------- ---------
01-APR-26 31-MAR-27
SQL> SELECT FISCAL_QUARTER_START_DATE(SYSDATE), FISCAL_QUARTER_END_DATE(SYSDATE);
FISCAL_QU FISCAL_QU
--------- ---------
01-JUL-26 30-SEP-26
SQL> SELECT FISCAL_MONTH_START_DATE(SYSDATE), FISCAL_MONTH_END_DATE(SYSDATE);
FISCAL_MO FISCAL_MO
--------- ---------
01-AUG-26 31-AUG-26
SQL> SELECT FISCAL_WEEK_START_DATE(SYSDATE), FISCAL_WEEK_END_DATE(SYSDATE);
FISCAL_WE FISCAL_WE
--------- ---------
05-AUG-26 11-AUG-26
数値を返す
指定された日付から部分の数値を返す関数が追加されました。
| 関数名 | 戻り値のデータ型 | 説明 |
|---|---|---|
| FISCAL_YEAR_NUMBER | NUMBER | 年の数値を返す |
| FISCAL_QUARTER_OF_YEAR | NUMBER | 四半期番号を返す |
| FISCAL_MONTH_OF_YEAR | NUMBER | 年から月番号を返す(1~12) |
| FISCAL_MONTH_OF_QUARTER | NUMBER | 四半期内の月番号を返す(1~12) |
| FISCAL_WEEK_OF_YEAR | NUMBER | 年から週番号を返す |
| FISCAL_DAY_OF_YEAR | NUMBER | 年から日番号を返す |
| FISCAL_DAY_OF_QUARTER | NUMBER | 四半期から日番号を返す |
| FISCAL_DAY_OF_MONTH | NUMBER | 月から日番号を返す |
| FISCAL_DAY_OF_WEEK | NUMBER | 週から日番号を返す(デフォルト:日曜日=1, 土曜日=7) |
SQL> SELECT FISCAL_YEAR_NUMBER(SYSDATE), FISCAL_QUARTER_OF_YEAR(SYSDATE);
FISCAL_YEAR_NUMBER(SYSDATE) FISCAL_QUARTER_OF_YEAR(SYSDATE)
--------------------------- -------------------------------
2027 2
SQL> SELECT FISCAL_MONTH_OF_YEAR(SYSDATE), FISCAL_MONTH_OF_QUARTER(SYSDATE);
FISCAL_MONTH_OF_YEAR(SYSDATE) FISCAL_MONTH_OF_QUARTER(SYSDATE)
------------------------------- --------------------------------
8 2
SQL> SELECT FISCAL_WEEK_OF_YEAR(SYSDATE);
FISCAL_WEEK_OF_YEAR(SYSDATE)
------------------------------
19
SQL> SELECT FISCAL_DAY_OF_YEAR(SYSDATE), FISCAL_DAY_OF_QUARTER(SYSDATE);
FISCAL_DAY_OF_YEAR(SYSDATE) FISCAL_DAY_OF_QUARTER(SYSDATE)
----------------------------- ------------------------------
128 37
SQL> SELECT FISCAL_DAY_OF_MONTH(SYSDATE), FISCAL_DAY_OF_WEEK(SYSDATE);
FISCAL_DAY_OF_MONTH(SYSDATE) FISCAL_DAY_OF_WEEK(SYSDATE)
------------------------------ ---------------------------
6 5
参考:Oracle AI Database 26ai: SQL Language Reference
Author: Noriyoshi Shinoda / Date: August 6, 2026