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