All Products
Search
Document Center

MaxCompute:TIME_DIFF

Last Updated:Nov 13, 2025

Menghitung selisih antara end_time dan start_time, lalu mengembalikan hasilnya dalam satuan waktu yang ditentukan oleh date_part.

Sintaksis

BIGINT TIME_DIFF(BIGINT <end_time>, BIGINT <start_time>, STRING <date_part>)

-- Contoh standar.
-- Mengembalikan 1106600.
SELECT TIME_DIFF(1230000, 123400, 'ff6');

Parameter

  • end_time, start_time: Wajib diisi. Nilai BIGINT yang merepresentasikan waktu dalam mikrodetik. Gunakan fungsi TO_TIME untuk membuat nilai ini.

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

  • date_part: Wajib diisi. Konstanta STRING yang menentukan satuan waktu dari nilai kembali. Nilai berikut didukung untuk parameter ini:

    • Jam: HOUR atau hh.

    • Menit: MINUTE atau mi.

    • Detik: SECOND atau ss.

    • Milidetik: MILLIS atau ff3.

    • Mikrodetik: MICROS atau ff6.

Nilai kembali

Mengembalikan nilai BIGINT. Aturan berikut berlaku:

  • Jika end_time atau start_time bukan bertipe BIGINT, akan dikembalikan error.

  • Jika end_time lebih kecil dari start_time, akan dikembalikan nilai negatif.

  • Jika end_time, start_time, atau date_part bernilai null, akan dikembalikan NULL.

  • Jika date_part bukan konstanta, memiliki format yang tidak didukung, atau bertipe data lain, akan dikembalikan error.

Examples

  • Contoh 1: Hitung selisih dalam mikrodetik ('ff6') antara dua nilai waktu.

    -- Mengembalikan 1106600.
    SELECT TIME_DIFF(1230000, 123400, 'ff6');
  • Contoh 2: Hitung selisih dalam milidetik ('ff3') antara dua nilai waktu yang dibuat dengan fungsi TO_TIME.

    -- Mengembalikan -20000.
    SELECT TIME_DIFF(TO_TIME(15,39,10), TO_TIME(15,39,30), 'ff3');
  • Contoh 3: Hitung selisih dalam detik ('second') antara dua nilai waktu.

    -- Aktifkan edisi tipe data MaxCompute 2.0.
    SET odps.sql.type.system.odps2 = true;
    
    -- Mengembalikan 10.
    SELECT TIME_DIFF(
    TO_TIME(TIMESTAMP '2025-03-27 15:39:40'),
    TO_TIME(TIMESTAMP '2025-03-27 15:39:30'),
    'second'
    );
  • Contoh 4: Hitung selisih dalam jam ('hour') antara dua nilai waktu yang dibuat dengan fungsi TO_TIME.

    -- Aktifkan edisi tipe data MaxCompute 2.0.
    SET odps.sql.type.system.odps2 = true;
    
    -- Selisih sebenarnya sekitar 2 jam dan 34 menit. Nilainya dibulatkan ke bawah menjadi 2.
    -- Mengembalikan 2.
    SELECT TIME_DIFF(TO_TIME(12,14,10), TO_TIME(09,39,30), 'hour');
  • Contoh 5: Contoh dengan input NULL.

    -- Jika ada parameter yang NULL, maka akan dikembalikan NULL.
    -- Mengembalikan NULL.
    SELECT TIME_DIFF(NULL, TO_TIME(12,0,0), 'minute');
    -- Mengembalikan NULL.
    SELECT TIME_DIFF(TO_TIME(12,0,0), NULL, 'minute');
    -- Mengembalikan NULL.
    SELECT TIME_DIFF(TO_TIME(12,0,0), TO_TIME(12,10,0), NULL);

Fungsi terkait

SELISIH_WAKTU adalah fungsi tanggal dan waktu. Untuk informasi lebih lanjut tentang fungsi tanggal dan waktu lainnya, lihat Fungsi tanggal dan waktu.