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