All Products
Search
Document Center

MaxCompute:TIME_SUB

Last Updated:Nov 13, 2025

Fungsi TIME_SUB mengurangi interval yang ditentukan oleh parameter delta dari nilai waktu time, menggunakan satuan waktu yang ditentukan oleh parameter date_part.

Sintaksis

BIGINT TIME_SUB(BIGINT <time>, BIGINT <delta>, STRING <date_part>)

-- Contoh standar.
-- Mengembalikan 1233995.
SELECT TIME_SUB(1234000, 5, 'MICROS');

Parameter

  • time: Wajib diisi. Nilai waktu dalam mikrodetik dengan tipe data BIGINT. Anda dapat menggunakan fungsi TO_TIME untuk membuat nilai ini.

    Dalam edisi tipe data MaxCompute V1.0, jika parameter ini bertipe STRING atau DOUBLE, nilai tersebut akan dikonversi secara implisit ke tipe BIGINT untuk perhitungan.

  • delta: Wajib diisi. Interval yang akan dikurangkan, bertipe BIGINT. Jika delta bernilai lebih besar dari 0, interval tersebut dikurangkan; jika tidak, interval tersebut ditambahkan.

    Dalam edisi tipe data MaxCompute V1.0, jika parameter ini bertipe STRING atau DOUBLE, nilai tersebut akan dikonversi secara implisit ke tipe BIGINT untuk perhitungan.

  • date_part: Wajib diisi. Satuan waktu dari interval, berupa konstanta STRING. Nilai yang valid:

    • Jam: HOUR atau hh.

    • Menit: MINUTE atau mi.

    • Detik: SECOND atau ss.

    • Milidetik: MILLIS atau ff3.

    • Mikrodetik: MICROS atau ff6.

Nilai kembalian

Mengembalikan nilai bertipe BIGINT yang merepresentasikan waktu dalam mikrodetik. Aturan berikut berlaku:

  • Jika parameter time bukan bertipe BIGINT, fungsi akan mengembalikan kesalahan.

  • Jika parameter date_part bukan konstanta, memiliki format yang tidak didukung, atau bertipe data lain, fungsi akan mengembalikan kesalahan.

  • Jika salah satu dari parameter time, delta, atau date_part bernilai NULL, fungsi akan mengembalikan NULL.

Contoh

  • Contoh 1: Kurangi interval dalam mikrodetik (ff6).

    -- Mengembalikan 1233995.
    SELECT TIME_SUB(1234000, 5, 'ff6');
  • Contoh 2: Kurangi interval dalam jam (hour).

    -- Mengembalikan 38380000000.
    SELECT TIME_SUB(TO_TIME('15:39:40','%H:%M:%S'), 5, 'hour');
  • Contoh 3: Kurangi interval dalam milidetik (millis).

    -- Aktifkan edisi tipe data MaxCompute V2.0.
    SET odps.sql.type.system.odps2 = true;
    
    -- Mengembalikan 56379995000.
    SELECT TIME_SUB(TO_TIME(TIMESTAMP '2025-03-27 15:39:40'), 5, 'millis');
  • Contoh 4: Gunakan fungsi FORMAT_TIME untuk mengonversi nilai waktu BIGINT yang dikembalikan menjadi nilai STRING dalam format tertentu.

    -- Mengembalikan 15:39:45.
    SELECT FORMAT_TIME(TIME_SUB(TO_TIME(15,39,40), -5, 'second'),'%H:%M:%S');
    
    -- Tetapkan edisi tipe data ke 2.0.
    SET odps.sql.type.system.odps2 = true;
    -- Mengembalikan 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');
  • Contoh 5: Tangani input NULL.

    -- Jika ada parameter yang NULL, maka akan dikembalikan NULL.
    -- Mengembalikan NULL.
    SELECT TIME_SUB(NULL, 10, 'SECOND');
    
    -- Mengembalikan NULL.
    SELECT TIME_SUB(1234000, NULL, 'ff6');
    
    -- Mengembalikan NULL.
    SELECT TIME_SUB(1234000, 5, NULL);

Fungsi terkait

Anda dapat menggunakan fungsi FORMAT_TIME untuk mengonversi nilai waktu BIGINT yang dikembalikan oleh fungsi TIME_SUB menjadi nilai STRING dalam format tertentu.

TIME_SUB adalah fungsi waktu. Untuk informasi selengkapnya mengenai fungsi perhitungan dan konversi waktu, lihat Fungsi tanggal dan waktu.