全部产品
Search
文档中心

MaxCompute:TRUNC_TIME

更新时间:Dec 03, 2025

Fungsi ini memotong nilai tanggal atau waktu ke satuan waktu yang ditentukan oleh date_part dan mengembalikan nilai STRING.

Sintaksis

STRING TRUNC_TIME(DATE|DATETIME|TIMESTAMP|TIMESTAMP_NTZ <date>, STRING <date_part>)

-- Contoh standar.
-- Mengembalikan 2025-06.
SELECT TRUNC_TIME(DATETIME '2025-06-10 14:20:30', 'month');

Parameter

  • date: Wajib diisi. Tanggal atau timestamp yang akan dipotong. Nilainya dapat bertipe DATE, DATETIME, TIMESTAMP, atau TIMESTAMP_NTZ.

    Jika Anda menggunakan edisi tipe data MaxCompute V1.0, input juga dapat berupa nilai STRING. String tersebut harus dalam format DATETIME yyyy-mm-dd hh:mi:ss, seperti 2025-07-21 00:00:00. Nilai tersebut secara implisit dikonversi ke tipe DATETIME sebelum perhitungan.

  • date_part: Wajib diisi. Satuan waktu untuk pemotongan. Parameter ini merupakan konstanta STRING yang tidak peka huruf besar/kecil. Nilai yang valid: year, month, day, dan hour.

Nilai kembali

Mengembalikan nilai STRING. Format string yang dikembalikan bergantung pada nilai date_part.

Untuk tipe data yang terkait zona waktu, seperti DATETIME dan TIMESTAMP, fungsi TRUNC_TIME terlebih dahulu mengonversi waktu lokal ke UTC. Kemudian, fungsi ini memotong waktu berdasarkan date_part dan mengembalikan hasilnya sebagai nilai STRING.
  • Jika date_part bernilai 'year', fungsi mengembalikan nilai dalam format yyyy.

  • Jika date_part bernilai 'month', fungsi mengembalikan nilai dalam format yyyy-mm.

  • Jika date_part bernilai 'day', fungsi mengembalikan nilai dalam format yyyy-mm-dd.

  • Jika date_part bernilai 'hour', fungsi mengembalikan nilai dalam format yyyy-mm-dd hh:mm:ss.

Aturan berikut berlaku untuk nilai kembalian:

  • Jika tipe data date bukan DATE, DATETIME, TIMESTAMP, atau TIMESTAMP_NTZ, maka akan dikembalikan error.

  • Jika date_part bernilai NULL, maka akan dikembalikan error.

Contoh

  • Contoh 1: Input berupa nilai DATETIME.

    Misalnya, asumsikan zona waktu sesi atau proyek saat ini adalah UTC+8 dan waktu lokalnya adalah DATETIME '2025-06-03 07:15:08'. Fungsi TRUNC_TIME terlebih dahulu mengonversi waktu lokal ini ke waktu UTC '2025-06-02 23:15:08'. Kemudian, fungsi memotong waktu berdasarkan date_part dan mengembalikan hasilnya sebagai nilai STRING.

    SET odps.sql.timezone=Asia/Shanghai;
    SELECT 
           TRUNC_TIME(DATETIME '2025-06-03 07:15:08','year') AS tc_year,
           TRUNC_TIME(DATETIME '2025-06-03 07:15:08','month') AS tc_month,
           TRUNC_TIME(DATETIME '2025-06-03 07:15:08','day') AS tc_date,
           TRUNC_TIME(DATETIME '2025-06-03 07:15:08','hour') AS tc_hour;
           
    -- Hasil berikut dikembalikan.
    +------------+------------+------------+------------+
    | tc_year    | tc_month   | tc_date    | tc_hour    |
    +------------+------------+------------+------------+
    | 2025       | 2025-06    | 2025-06-02 | 2025-06-02 23:00:00 |
    +------------+------------+------------+------------+
  • Contoh 2: Input berupa nilai DATE.

    Misalnya, jika inputnya adalah DATE '2025-06-10', fungsi TRUNC_TIME memotong nilai ini berdasarkan satuan waktu yang ditentukan oleh date_part dan mengembalikan nilai STRING.

    SELECT 
           TRUNC_TIME(DATE '2025-06-10','year' ),
           TRUNC_TIME(DATE '2025-06-10','month' ),
           TRUNC_TIME(DATE '2025-06-10','day' );
    
    -- Hasil berikut dikembalikan.
    +------------+------------+------------+
    | _c0        | _c1        | _c2        |
    +------------+------------+------------+
    | 2025       | 2025-06    | 2025-06-10 |
    +------------+------------+------------+
  • Contoh 3: Waktu bertipe STRING.

    Misalnya, jika inputnya adalah nilai STRING '2025-06-03 15:30:30', Anda harus mengatur edisi tipe data proyek MaxCompute Anda ke V1.0. Hal ini memungkinkan nilai tersebut dikonversi secara implisit ke tipe DATETIME untuk perhitungan. Jika tidak, error akan dikembalikan.

    -- Zona waktu session atau proyek saat ini adalah UTC+8.
    SET odps.sql.timezone=Asia/Shanghai;
    -- Atur edisi tipe data ke V1.0.
    SET odps.sql.type.system.odps2=false;
    
    -- Waktu terlebih dahulu dikonversi ke UTC lalu dipotong ke satuan jam.
    SELECT TRUNC_TIME('2025-06-03 15:30:30','hour');
    
    -- Hasil berikut dikembalikan.
    +------------+
    | _c0        |
    +------------+
    | 2025-06-03 07:00:00 |
    +------------+

Fungsi terkait

Fungsi TRUNC_TIME adalah fungsi tanggal. Untuk informasi lebih lanjut tentang fungsi perhitungan dan konversi tanggal, lihat Fungsi tanggal.