Fungsi TIME_TRUNC memotong nilai time berdasarkan satuan waktu yang ditentukan oleh date_part dan mengembalikan nilai BIGINT yang merepresentasikan waktu dalam mikrodetik.
Sintaksis
BIGINT TIME_TRUNC(BIGINT <time>, STRING <date_part>)
-- Contoh.
-- Mengembalikan 1234567890.
SELECT TIME_TRUNC(1234567890L,'ff6');Parameter
time: Wajib diisi. Nilai BIGINT yang merepresentasikan waktu dalam mikrodetik. Anda dapat menggunakan fungsi TO_TIME untuk membuat nilai ini.
Pada versi tipe data MaxCompute 1.0, jika parameter bertipe STRING atau DOUBLE, nilai tersebut akan dikonversi secara implisit ke tipe BIGINT untuk perhitungan.
date_part: Wajib diisi. Satuan waktu untuk pemotongan. Parameter ini harus berupa konstanta STRING. Nilai yang valid adalah:
MICROSECOND/MICROS/ff6: Jika Anda menggunakan granularitas ini, nilai waktu tidak dipotong karena mikrodetik merupakan satuan waktu terkecil.MILLISECOND/MILLIS/ff3: Memotong waktu ke milidetik terdekat yang kurang dari atau sama dengan nilai saat ini. Misalnya, jika waktu adalah15:30:00.123456, hasil yang dipotong adalah15:30:00.123.SECOND/SS: Memotong waktu ke detik terdekat yang kurang dari atau sama dengan nilai saat ini. Misalnya, jika waktu adalah15:30:00.123456, hasil yang dipotong adalah15:30:00.MINUTE/MI: Memotong waktu ke menit terdekat yang kurang dari atau sama dengan nilai saat ini. Misalnya, jika waktu adalah15:30:45.123456, hasil yang dipotong adalah15:30:00.HOUR/HH: Memotong waktu ke jam terdekat yang kurang dari atau sama dengan nilai saat ini. Misalnya, jika waktu adalah15:45:30.123456, hasil yang dipotong adalah15:00:00.
Nilai kembali
Fungsi ini mengembalikan nilai BIGINT dalam mikrodetik dengan aturan sebagai berikut:
Jika time bukan nilai BIGINT, maka error dikembalikan.
Jika date_part bukan nilai konstan, berada dalam format yang tidak didukung, atau bertipe data lain, maka error dikembalikan.
Jika time atau date_part bernilai NULL, maka NULL dikembalikan.
Contoh
Contoh
Contoh 1: Potong nilai waktu ke granularitas mikrodetik ('ff6') dan milidetik ('ff3').
-- Potong ke granularitas mikrodetik (ff6). Mengembalikan 1234567890. SELECT TIME_TRUNC(1234567890, 'ff6'); -- Potong ke granularitas milidetik (ff3). Mengembalikan 1234567000. SELECT TIME_TRUNC(1234567890, 'ff3');Contoh 2: Potong nilai waktu ke granularitas jam ('HOUR'), menit ('MINUTE'), dan detik ('SECOND'). Kemudian, gunakan fungsi FORMAT_TIME untuk mengonversi nilai waktu BIGINT yang dikembalikan menjadi STRING dalam format yang ditentukan.
-- Potong waktu '15:31:38.776' ke berbagai granularitas dan format outputnya. -- Potong ke jam. Mengembalikan 15:00:00. SELECT FORMAT_TIME( TIME_TRUNC(TO_TIME('15:31:38.776', 'HH:MI:SS.ff3'), 'HOUR'), '%H:%M:%S' ) AS truncated_hour; -- Potong ke menit. Mengembalikan 15:31:00. SELECT FORMAT_TIME( TIME_TRUNC(TO_TIME('15:31:38.776', 'HH:MI:SS.ff3'), 'MINUTE'), '%H:%M:%S' ) AS truncated_minute; -- Potong ke detik. Mengembalikan 15:31:38. SELECT FORMAT_TIME( TIME_TRUNC(TO_TIME('15:31:38.776', 'HH:MI:SS.ff3'), 'SECOND'), '%H:%M:%S' ) AS truncated_second;Contoh 3: Tangani input NULL.
-- Mengembalikan NULL. SELECT TIME_TRUNC(NULL, 'SECOND'); -- Jika date_part adalah NULL, maka NULL dikembalikan. SELECT TIME_TRUNC(TO_TIME(12,00,00), NULL);
Fungsi terkait
TIME_TRUNC merupakan fungsi waktu. Untuk informasi lebih lanjut tentang fungsi lain yang digunakan untuk perhitungan atau transformasi waktu, lihat Fungsi tanggal dan waktu.