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