All Products
Search
Document Center

MaxCompute:TIME_TRUNC

Last Updated:Nov 26, 2025

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 adalah 15:30:00.123456, hasil yang dipotong adalah 15:30:00.123.

    • SECOND / SS: Memotong waktu ke detik terdekat yang kurang dari atau sama dengan nilai saat ini. Misalnya, jika waktu adalah 15:30:00.123456, hasil yang dipotong adalah 15:30:00.

    • MINUTE / MI: Memotong waktu ke menit terdekat yang kurang dari atau sama dengan nilai saat ini. Misalnya, jika waktu adalah 15:30:45.123456, hasil yang dipotong adalah 15:30:00.

    • HOUR / HH: Memotong waktu ke jam terdekat yang kurang dari atau sama dengan nilai saat ini. Misalnya, jika waktu adalah 15:45:30.123456, hasil yang dipotong adalah 15: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.