INTERVAL YEAR TO MONTHは、YEARとMONTHのフィールドを使用して期間を格納します。このデータ型は、2つの日付時刻値の差を表すために使用できます。
構文
INTERVAL YEAR [(precision)] TO MONTH
パラメータ
precisionはYEAR要素の精度を表し、デフォルト値は2です。取り得る範囲は[0,9]です。つまり、このパラメータを指定しない場合、最大で99年11ヶ月の区切り日を格納できます(最大でも100年を超えることはできません)。格納する期間がデフォルトの精度2桁を超える場合、そのパラメータの値は空にすることはできず、明示的に指定する必要があります。
使用方法
INTERVAL YEAR TO MONTH データ型の値を挿入する際、サポートされている形式は次の表のとおりです。
区切りデータ型の値の指定に関する詳細は、区切りリテラルを参照してください。
構文 |
例 |
説明 |
|---|---|---|
| INTERVAL 'year-month' YEAR(precision) TO MONTH | INTERVAL '120-3' YEAR(3) TO MONTH | 120年3ヶ月の区切り。YEAR要素の値がデフォルトの精度2より大きいため、YEAR要素の精度を3に指定する必要があります。 |
| INTERVAL 'year' YEAR(precision) | INTERVAL '50' YEAR | 50年の区切り。 |
| INTERVAL 'month' MONTH | INTERVAL '500' MONTH | 500ヶ月、または41年8ヶ月の区切り。 |
例
テーブル Interval_Sample に、データ型 INTERVAL YEAR TO MONTH の3列 interval1、interval2、interval3 を作成し、数値を挿入します。
CREATE TABLE Interval_Sample (
interval1 INTERVAL YEAR TO MONTH,
interval2 INTERVAL YEAR(3) TO MONTH,
interval3 INTERVAL YEAR TO MONTH
);
INSERT INTO Interval_Sample (interval1, interval2, interval3)
VALUES (INTERVAL '12-3' YEAR TO MONTH, INTERVAL '120-3' YEAR(3) TO MONTH, INTERVAL '40' MONTH);
obclient> SELECT * FROM Interval_Sample;
+-----------+-----------+-----------+
| INTERVAL1 | INTERVAL2 | INTERVAL3 |
+-----------+-----------+-----------+
| +12-03 | +120-03 | +03-04 |
+-----------+-----------+-----------+
1 row in set
区切りと他の日付型の計算
OceanBaseデータベースはデータ型間の変換をサポートしているため、区切りデータ型の値は他の日付値と数学的演算を行うことができます。しかし、データベースはデータ型間の任意の加算、減算、乗算、除算をサポートしているわけではありません。
現在サポートされている日付型の計算マトリックスを確認し、データ型変換の詳細を知りたい場合は、日付時刻DATEと区切りINTERVALの計算およびデータ型変換ルールを参照してください。
区切りと区切りの計算では、戻り値も区切りデータ型となります。例:
obclient> SELECT INTERVAL '2-2' YEAR TO MONTH -INTERVAL '1-1' YEAR TO MONTH calculate1, INTERVAL '2-2' YEAR TO MONTH + INTERVAL '1-1' YEAR TO MONTH calculate2 FROM DUAL; +---------------+---------------+ | CALCULATE1 | CALCULATE2 | +---------------+---------------+ | +000000001-01 | +000000003-03 | +---------------+---------------+ 1 row in set区切りと日付時刻の計算では、戻り値は日付データ型となります。
SYSDATEは現在時刻 2020-02-27 16:13:50 を返します。以下の例は、今から2ヶ月後の日付値を返します。データベースは「区切り+日付時刻」のみをサポートし、「区切り-日付時刻」は無効な演算です。しかし、「日付時刻+区切り」と「日付時刻-区切り」は有効な演算です。obclient> SELECT TO_CHAR(INTERVAL '2' MONTH +SYSDATE,'YYYY-MM-DD HH24:MI:SS') calculate3 FROM DUAL; +---------------------+ | CALCULATE3 | +---------------------+ | 2021-12-28 17:38:41 | +---------------------+ 1 row in set時間間隔と数値の演算では、結果は引き続き時間間隔データ型となります。時間間隔は数値との乗算および除算が可能です。以下の例は、時間間隔2ヶ月を2で乗算する計算と、時間間隔2日を3で除算する計算です。
obclient> SELECT INTERVAL '2' MONTH*2 calculate4, INTERVAL '2' DAY/3 calculate5 FROM DUAL; +---------------+-------------------------------+ | CALCULATE4 | CALCULATE5 | +---------------+-------------------------------+ | +000000000-04 | +000000000 16:00:00.000000000 | +---------------+-------------------------------+ 1 row in set