INTERVAL DAY TO SECONDは、日、時間、分、秒を単位とする期間を格納できます。このデータ型は、2つの日付時刻値間の正確な差異を表すために使用できます。本記事では、主にINTERVAL DAY TO SECONDデータ型の構文、パラメータ、および使用方法について説明します。
構文
INTERVAL DAY [(precision)] TO SECOND [(fractional_seconds_precision)]
パラメータ
| パラメータ | 値 | 説明 |
|---|---|---|
| precision | [0,9] | DAY要素の精度を表します。デフォルト値は2です。 |
| fractional_seconds_precision | [0,9] | SECOND要素の小数部分の精度を表します。デフォルト値は6です。 |
使用方法
INTERVAL DAY TO SECONDデータ型の値を挿入する際、サポートされる形式は以下の表に示されています。間隔データ型の値の指定の詳細については、間隔リテラルを参照してください。
| 構文 | 例 | 説明 |
|---|---|---|
| INTERVAL 'dd hh:mm:ss' DAY(precision) TO SECOND(fractional_seconds_precision) | INTERVAL '140 5:12:10.2222222' DAY(3) TO SECOND(7) | 140日5時間12分10.2222222秒の間隔を設定します。 |
| INTERVAL 'dd hh'DAY(precision) TO HOUR | INTERVAL '400 5' DAY(3) TO HOUR | 400日5時間の間隔を設定します。 |
| INTERVAL 'dd hh:mm'DAY(precision) TO MINUTE | INTERVAL '4 5:12' DAY TO MINUTE | 4日5時間12分の間隔を設定します。 |
| INTERVAL 'hh:mm' HOUR TO MINUTE | INTERVAL '11:20' HOUR TO MINUTE | 11時間20分の間隔を設定します。 |
| INTERVAL 'hh:mm:ss' HOUR TO SECOND(fractional_seconds_precision) | INTERVAL '11:12:10.2222222' HOUR TO SECOND(7) | 11時間12分10.2222222秒の間隔を設定します。 |
| INTERVAL 'dd' DAY(precision) | INTERVAL '14' DAY | 14日の間隔を設定します。 |
| INTERVAL 'hh' HOUR | INTERVAL '160' HOUR | 160時間の間隔を設定します。 |
| INTERVAL 'mm' MINUTE | INTERVAL '14' MINUTE | 14分の間隔を設定します。 |
| INTERVAL 'ss' SECOND(fractional_seconds_precision) | INTERVAL '14.666' SECOND(2, 3) | 14.666秒の間隔を設定します。 |
間隔とその他の日付型データの計算
OceanBaseデータベースはデータ型間の変換をサポートしているため、間隔データ型の値を他の日付値と数学的演算を行うことができます。ただし、データベースはデータ型間で任意の加減乗除の演算をサポートしていません。
現在サポートされている日付型データの計算関係をマトリックス図で確認し、さらに多くのデータ型変換情報を知りたい場合は、DATEとINTERVALの計算およびデータ型変換ルールを参照してください。
間隔と他のデータ型データの計算例については、INTERVAL YEAR TO MONTHデータ型を参照してください。
例
テーブルInterval_Sampleに、データ型がINTERVAL DAY TO SECONDの2つの列interval1とinterval2を作成し、これらの列に数値を挿入します。
CREATE TABLE Interval_Sample (interval1 INTERVAL DAY TO SECOND, interval2 INTERVAL DAY(3) TO SECOND(3));
INSERT INTO Interval_Sample (interval1, interval2) VALUES ( INTERVAL '15 06:10:08' DAY TO SECOND, INTERVAL '150 06:10:08' DAY(3) TO SECOND(3));
obclient> SELECT * FROM Interval_Sample;
+---------------------+-------------------+
| INTERVAL1 | INTERVAL2 |
+---------------------+-------------------+
| +15 06:10:08.000000 | +150 06:10:08.000 |
+---------------------+-------------------+
1 row in set