TIME_SUB 関数は、指定された時間単位 date_part を使用して、時間値 time から指定された間隔 delta を減算します。
構文
BIGINT TIME_SUB(BIGINT <time>, BIGINT <delta>, STRING <date_part>)
-- 標準的な例。
-- 1233995 を返します。
SELECT TIME_SUB(1234000, 5, 'MICROS');パラメーター
time: 必須。マイクロ秒単位の時間値。値は BIGINT 型である必要があります。TO_TIME 関数を使用してこの値を構築できます。
MaxCompute V1.0 データ型エディションでは、このパラメーターが STRING 型または DOUBLE 型の場合、計算のために暗黙的に BIGINT 型に変換されます。
delta: 必須。減算する間隔。このパラメーターは BIGINT 型です。delta が 0 より大きい場合、間隔は減算されます。それ以外の場合、間隔は加算されます。
MaxCompute V1.0 データ型エディションでは、このパラメーターが STRING 型または DOUBLE 型の場合、計算のために暗黙的に BIGINT 型に変換されます。
date_part: 必須。間隔の時間単位。このパラメーターは STRING 定数です。有効な値は次のとおりです。
時間:
HOURまたはhh。分:
MINUTEまたはmi。秒:
SECONDまたはss。ミリ秒:
MILLISまたはff3。マイクロ秒:
MICROSまたはff6。
戻り値
BIGINT 値を返します。時間値はマイクロ秒で表されます。次のルールが適用されます。
time パラメーターが BIGINT 型でない場合、エラーが返されます。
date_part パラメーターが定数でない、サポートされていないフォーマットである、または別のデータの型である場合、エラーが返されます。
time、delta、または date_part が null の場合、NULL が返されます。
例
例 1: マイクロ秒単位 ('ff6') で間隔を減算します。
-- 1233995 を返します。 SELECT TIME_SUB(1234000, 5, 'ff6');例 2: 時間単位 ('hour') で間隔を減算します。
-- 38380000000 を返します。 SELECT TIME_SUB(TO_TIME('15:39:40','%H:%M:%S'), 5, 'hour');例 3: ミリ秒単位 ('millis') で間隔を減算します。
-- MaxCompute V2.0 データ型エディションを有効にします。 SET odps.sql.type.system.odps2 = true; -- 56379995000 を返します。 SELECT TIME_SUB(TO_TIME(TIMESTAMP '2025-03-27 15:39:40'), 5, 'millis');例 4: FORMAT_TIME 関数を使用して、返された BIGINT 時間値を指定されたフォーマットの STRING 値に変換します。
-- 15:39:45 を返します。 SELECT FORMAT_TIME(TIME_SUB(TO_TIME(15,39,40), -5, 'second'),'%H:%M:%S'); -- データ型エディションを 2.0 に設定します。 SET odps.sql.type.system.odps2 = true; -- 15:44:40.123 を返します。 SELECT FORMAT_TIME(TIME_SUB(TO_TIME(TIMESTAMP_NTZ '2025-03-27 15:39:40.123456'),-5,'minute'),'%H:%M:%S.ff3');例 5: NULL 入力を処理します。
-- いずれかのパラメーターが NULL の場合、NULL が返されます。 -- NULL を返します。 SELECT TIME_SUB(NULL, 10, 'SECOND'); -- NULL を返します。 SELECT TIME_SUB(1234000, NULL, 'ff6'); -- NULL を返します。 SELECT TIME_SUB(1234000, 5, NULL);
関連関数
FORMAT_TIME 関数を使用して、TIME_SUB 関数によって返された BIGINT 時間値を指定されたフォーマットの STRING 値に変換できます。
TIME_SUB は時間関数です。時間計算および変換関数の詳細については、「日付と時刻の関数」をご参照ください。