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:
HOURatauhh.Menit:
MINUTEataumi.Detik:
SECONDatauss.Milidetik:
MILLISatauff3.Mikrodetik:
MICROSatauff6.
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.