0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

カレンダー関連関数を試す(Oracle AI Database 26ai)

0
Last updated at Posted at 2026-08-05

カレンダー関連関数

Oracle AI Database 26ai には日付関連の関数が多数追加されました。本記事では追加された関数の実行例と注意点について解説します。

日付からの情報取得

日付から、年、四半期、月、曜日、日の情報を取得する以下の関数が追加されました。

関数名 戻り値のデータ型 説明 デフォルト・フォーマット
CALENDAR_YEAR VARCHAR2 年を返す {YYYY}
CALENDAR_QUARTER VARCHAR2 四半期名を返す Q{n}-{YYYY}
CALENDAR_MONTH VARCHAR2 月名を返す {MON}-{YYYY}
CALENDAR_WEEK VARCHAR2 週番号を返す W{n}-{YYYY}
CALENDAR_DAY VARCHAR2 日を返す {DD}-{MON}-{YYYY}
カレンダー部分取得
SQL> SELECT CALENDAR_YEAR(SYSDATE);
CALEN
-----
2026

SQL> SELECT CALENDAR_QUARTER(SYSDATE);
CALENDAR
--------
Q3-2026

SQL> SELECT CALENDAR_MONTH(SYSDATE);
CALENDAR_MONTH(SYS
------------------
AUG-2026

SQL> SELECT CALENDAR_WEEK(SYSDATE);
CALENDAR_
---------
W31-2026

SQL> SELECT CALENDAR_DAY(SYSDATE);
CALENDAR_DAY(SYSDATE)
---------------------
05-AUG-2026

CALENDAR_MONTH 関数や、CALENDAR_DAY の出力フォーマットは NLS 関連の初期化パラメーターで変化します。

月名のフォーマット
SQL> ALTER SESSION SET nls_date_language='FRENCH';
Session altered.

SQL> SELECT CALENDAR_MONTH(SYSDATE);
CALENDAR_MONTH
--------------
AOUT -2026

SQL> SELECT CALENDAR_DAY(SYSDATE);
CALENDAR_DAY(SYSDATE)
-----------------------------
05-AOUT -2026

初期化パラメーターだけでなく、関数にフォーマットを指定することもできます。

フォーマット指定
SQL> SELECT CALENDAR_MONTH(SYSDATE, 'MON-YYYY', 'NLS_DATE_LANGUAGE=FRENCH');

CALENDAR_MONTH(SYSDATE,'M
-------------------------
AOUT -2026

日付の追加関数

特定の日付に数値を加えた場合の日付を返す関数が追加されました。

関数名 戻り値のデータ型 説明 デフォルト・フォーマット
CALENDAR_ADD_YEARS DATE 追加した年を返す {YYYY}
CALENDAR_ADD_QUARTERS DATE 追加した四半期名を返す Q{n}-{YYYY}
CALENDAR_ADD_MONTHS DATE 追加した月名を返す {MON}-{YYYY}
CALENDAR_ADD_WEEKS DATE 追加した週番号を返す W{n}-{YYYY}
CALENDAR_ADD_DAYS DATE 追加した日を返す {DD}-{MON}-{YYYY}
指定された期間を追加した日付
SQL> SELECT CALENDAR_ADD_YEARS(SYSDATE, 1);
CALENDAR_
---------
05-AUG-27

SQL> SELECT CALENDAR_ADD_QUARTERS(SYSDATE, 2);
CALENDAR_
---------
05-FEB-27

SQL> SELECT CALENDAR_ADD_WEEKS(SYSDATE, 3);
CALENDAR_
---------
26-AUG-26

SQL> SELECT CALENDAR_ADD_DAYS(SYSDATE, 4);
CALENDAR_
---------
09-AUG-26

追加する日にマイナスの値を指定すると、パラメーターで指定された日よりも過去の日付を取得できます。

過去日付
SQL> SELECT SYSDATE, CALENDAR_ADD_WEEKS(SYSDATE, -1);

SYSDATE    CALENDAR_A
---------- ----------
2026/08/06 2026/07/30

経過時間

現在時刻からの差分を返す CALENDAR_SINCE 関数が追加されました。マニュアル SQL Reference には掲載されていますが、現状では動作しないようです。

CALENDAR_SINCE 関数
SQL> SELECT CALENDAR_SINCE(DATE '2025-06-10');

CALENDAR_SINCE(DATE'2025-06-10')
--------------------------------------------------------------------------
Message 7 not found; No message file for product=RDBMS, facility=HCSC

開始日と終了日

指定された期間の開始日と終了日を返す関数が追加されました。

関数名 戻り値のデータ型 説明
CALENDAR_YEAR_START_DATE DATE 年の開始日を返す
CALENDAR_YEAR_END_DATE DATE 年の終了日を返す
CALENDAR_QUARTER_START_DATE DATE 四半期の開始日を返す
CALENDAR_QUARTER_END_DATE DATE 四半期名の開始日を返す
CALENDAR_MONTH_START_DATE DATE 月の開始日を返す
CALENDAR_MONTH_END_DATE DATE 月の開始日を返す
CALENDAR_WEEK_START_DATE DATE 週の開始日を返す
CALENDAR_WEEK_END_DATE DATE 週の終了日を返す
開始日・終了日
SQL> SELECT CALENDAR_YEAR_START_DATE(SYSDATE), CALENDAR_YEAR_END_DATE(SYSDATE);
CALENDAR_ CALENDAR_
--------- ---------
01-JAN-26 31-DEC-26

SQL> SELECT CALENDAR_QUARTER_START_DATE(SYSDATE), CALENDAR_QUARTER_END_DATE(SYSDATE);
CALENDAR_ CALENDAR_
--------- ---------
01-JUL-26 30-SEP-26

SQL> SELECT CALENDAR_MONTH_START_DATE(SYSDATE), CALENDAR_MONTH_END_DATE(SYSDATE);
CALENDAR_ CALENDAR_
--------- ---------
01-AUG-26 31-AUG-26

SQL> SELECT CALENDAR_WEEK_START_DATE(SYSDATE), CALENDAR_WEEK_END_DATE(SYSDATE);
CALENDAR_ CALENDAR_
--------- ---------
30-JUL-26 05-AUG-26

数値を返す

指定された日付から部分の数値を返す関数が追加されました。

関数名 戻り値のデータ型 説明
CALENDAR_YEAR_NUMBER NUMBER 年の数値を返す
CALENDAR_QUARTER_OF_YEAR NUMBER 四半期番号を返す
CALENDAR_MONTH_OF_YEAR NUMBER 年から月番号を返す(1~12)
CALENDAR_MONTH_OF_QUARTER NUMBER 四半期内の月番号を返す(1~12)
CALENDAR_WEEK_OF_YEAR NUMBER 年から週番号を返す
CALENDAR_DAY_OF_YEAR NUMBER 年から日番号を返す
CALENDAR_DAY_OF_QUARTER NUMBER 四半期から日番号を返す
CALENDAR_DAY_OF_MONTH NUMBER 月から日番号を返す
CALENDAR_DAY_OF_WEEK NUMBER 週から日番号を返す(デフォルト:日曜日=1, 土曜日=7)
数値を返す
SQL> SELECT CALENDAR_YEAR_NUMBER(SYSDATE), CALENDAR_QUARTER_OF_YEAR(SYSDATE);
CALENDAR_YEAR_NUMBER(SYSDATE) CALENDAR_QUARTER_OF_YEAR(SYSDATE)
----------------------------- ---------------------------------
                         2026                                 3

SQL> SELECT CALENDAR_MONTH_OF_YEAR(SYSDATE), CALENDAR_MONTH_OF_QUARTER(SYSDATE);
CALENDAR_MONTH_OF_YEAR(SYSDATE) CALENDAR_MONTH_OF_QUARTER(SYSDATE)
------------------------------- ----------------------------------
                              8                                  2

SQL> SELECT CALENDAR_WEEK_OF_YEAR(SYSDATE);
CALENDAR_WEEK_OF_YEAR(SYSDATE)
------------------------------
                            31

SQL> SELECT CALENDAR_DAY_OF_YEAR(SYSDATE), CALENDAR_DAY_OF_QUARTER(SYSDATE);
CALENDAR_DAY_OF_YEAR(SYSDATE) CALENDAR_DAY_OF_QUARTER(SYSDATE)
----------------------------- --------------------------------
                          217                               36

SQL> SELECT CALENDAR_DAY_OF_MONTH(SYSDATE), CALENDAR_DAY_OF_WEEK(SYSDATE);
CALENDAR_DAY_OF_MONTH(SYSDATE) CALENDAR_DAY_OF_WEEK(SYSDATE)
------------------------------ -----------------------------
                             5                             4

参考:Oracle AI Database 26ai: SQL Language Reference

Author: Noriyoshi Shinoda / Date: August 5, 2026

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?