全部产品
Search
文档中心

MaxCompute:TO_CHAR

更新时间:Dec 17, 2025

Fungsi TO_CHAR mengonversi nilai dari berbagai tipe data ke tipe STRING. Fungsi ini mengonversi nilai BOOLEAN, BIGINT, DECIMAL, atau DOUBLE menjadi string, serta memformat nilai tanggal menjadi string berdasarkan format yang ditentukan.

Konversi tipe BOOLEAN, BIGINT, DECIMAL, dan DOUBLE

Anda dapat menggunakan fungsi TO_CHAR untuk mengonversi nilai BOOLEAN, BIGINT, DECIMAL, atau DOUBLE ke tipe STRING.

Sintaks

STRING TO_CHAR(BOOLEAN|BIGINT|DOUBLE|DECIMAL <value>)

-- Contoh standar.
-- Mengembalikan 123.
SELECT TO_CHAR(123);

Parameter

value: Wajib diisi. Nilai bertipe BOOLEAN, BIGINT, DECIMAL, atau DOUBLE.

Nilai kembali

Mengembalikan nilai bertipe STRING. Aturan berikut berlaku:

  • Jika value bukan bertipe BOOLEAN, BIGINT, DECIMAL, atau DOUBLE, maka error dikembalikan.

  • Jika value bernilai NULL, maka NULL dikembalikan.

Contoh

Contoh dasar

  • Contoh 1: Mengonversi nilai ke tipe STRING.

    -- Mengembalikan 123.
    SELECT TO_CHAR(123);
  • Contoh 2: Jika parameter input bernilai NULL, nilai kembalinya adalah NULL.

    -- Mengembalikan NULL.
    SELECT TO_CHAR(NULL);

Konversi tipe tanggal

Anda dapat menggunakan fungsi TO_CHAR untuk memformat nilai tanggal atau waktu menjadi nilai STRING berdasarkan format dan zona waktu yang ditentukan.

Sintaks

Saat Anda menggunakan tipe data tanggal atau waktu sebagai parameter input, fungsi TO_CHAR mendukung dua signature berikut. Pilih signature sesuai kebutuhan Anda.

  • Signature 1: Mengonversi nilai DATE atau DATETIME menjadi nilai STRING berdasarkan format yang ditentukan.

    STRING TO_CHAR(DATE|DATETIME <date>, STRING <format>)
    
    -- Contoh standar.
    -- Mengembalikan 2025-03-05.
    SELECT TO_CHAR(DATETIME '2025-03-05 14:30:00', 'yyyy-mm-dd');
  • Signature 2: Mengonversi nilai TIMESTAMP atau TIMESTAMP_NTZ menjadi nilai STRING berdasarkan format dan zona waktu yang ditentukan.

    STRING TO_CHAR(TIMESTAMP|TIMESTAMP_NTZ <date>, STRING <format>[, STRING <time_zone>])
    
    -- Contoh standar.
    -- Mengembalikan 2025-07-20 07:30:00.
    SELECT TO_CHAR(TIMESTAMP '2025-07-20 07:30:00', '%Y-%m-%d %H:%M:%S');
    

Parameter

  • date: Wajib diisi. Nilai tanggal yang akan diformat. Tipe data yang didukung adalah DATE, DATETIME, TIMESTAMP, dan TIMESTAMP_NTZ.

    Pada proyek MaxCompute yang menggunakan edisi tipe data versi 1.0, jika parameter ini bertipe STRING dan sesuai dengan format yyyy-mm-dd hh:mi:ss, seperti 2025-07-21 00:00:00, maka nilai tersebut secara implisit dikonversi ke tipe DATETIME.

  • format: Wajib diisi. Nilai STRING yang menentukan format output. Tabel berikut menjelaskan elemen format yang didukung untuk bagian tanggal dan waktu.

    Elemen format tanggal

    • %Y/yyyy/YYYY: Tahun lengkap dalam bentuk angka desimal (dengan abad).

    • %y: Tahun tanpa abad dalam bentuk angka desimal (00–99).

    • %m/mm/MM: Bulan dalam bentuk angka desimal (01–12).

    • %B: Nama lengkap bulan dalam bahasa Inggris, misalnya January.

    • %b/%h: Nama singkat bulan dalam bahasa Inggris, misalnya Jan.

    • %d/dd/DD: Hari dalam bulan dalam bentuk angka desimal (01–31).

    • %e: Hari dalam bulan dalam bentuk angka desimal (1–31). Misalnya, untuk hari kedua dalam bulan, format ini mengembalikan 2, sedangkan dd mengembalikan 02.

    • %F: Setara dengan %Y-%m-%d (yyyy-mm-dd).

    • %j: Hari dalam tahun dalam bentuk angka desimal (001–366), misalnya 360.

    • %u: Hari dalam minggu dalam bentuk angka desimal (1–7), dengan Senin sebagai 1.

    • %A: Nama lengkap hari dalam bahasa Inggris, misalnya Wednesday.

    • %a: Nama singkat hari dalam bahasa Inggris, misalnya Wed.

    Elemen format waktu

    • %p: AM atau PM.

    • %H/hh/HH: Jam (format 24 jam) dalam bentuk angka desimal (00–23).

    • %I: Jam (format 12 jam) dalam bentuk angka desimal (01–12).

    • %l: Jam (format 12 jam) dalam bentuk angka desimal (1–12). Angka satuan diawali spasi.

    • %M/mi/MI: Menit dalam bentuk angka desimal (00–59).

    • %S/ss/SS: Detik dalam bentuk angka desimal (00–60).

    • %X: Setara dengan waktu dalam format HH:MM:SS.

    • %T: Setara dengan %H:%M:%S (hh-mi-ss).

    • ff3: Milidetik dalam bentuk angka desimal tiga digit (000–999). Ini merepresentasikan bagian pecahan dari detik.

    • %E<number>S: Detik dengan presisi pecahan sebanyak <number> digit. Misalnya, %E3S cocok dengan 00.123.

    • %E*S: Detik dengan presisi pecahan penuh 6 digit, misalnya 00.123456.

    • %Ez: Zona waktu numerik (+HH:MM atau -HH:MM).

  • time_zone: Opsional. Nilai STRING yang menentukan zona waktu. Untuk informasi selengkapnya, lihat Daftar zona waktu.

    Jika Anda tidak menentukan zona waktu:

    • Jika date bertipe TIMESTAMP, zona waktu sesi atau proyek saat ini digunakan secara default.

    • Jika date bertipe TIMESTAMP_NTZ, zona waktu UTC digunakan secara default.

Nilai kembali

Mengembalikan nilai bertipe STRING. Aturan berikut berlaku:

  • Jika date bukan bertipe DATE, DATETIME, TIMESTAMP, atau TIMESTAMP_NTZ, maka error dikembalikan.

  • Jika date bernilai NULL, maka error dikembalikan.

  • Jika format bernilai NULL, maka NULL dikembalikan.

Contoh

Contoh dasar

  • Contoh 1: Parameter input bertipe DATE atau DATETIME.

    -- Mengembalikan Today is 2023-12-25.
    SELECT TO_CHAR(DATE "2023-12-25", "Today is yyyy-mm-dd");
    
    -- Mengembalikan Today is 20231225.
    SELECT TO_CHAR(DATE "2023-12-25", "Today is %Y%m%d");
    
    -- Mengembalikan Today is 231225Monday.
    SELECT TO_CHAR(DATE "2023-12-25", "Today is %y%m%d%A");
    
    -- Mengembalikan Today is 12 Month 25 Day.
    SELECT TO_CHAR(DATE "2023-12-25", "Today is MM Month DD Day");
    
    -- Mengembalikan Alibaba Finance 2010-12*03.
    SELECT TO_CHAR(DATETIME '2010-12-03 00:00:00','Alibaba Finance yyyy-mm*dd');
    
    -- Mengembalikan The time is 15:30:00.
    SELECT TO_CHAR(DATETIME '2025-07-18 15:30:00','The time is %X');
    
    -- Mengembalikan It is now 3:30:00 PM.
    SELECT TO_CHAR(DATETIME '2025-07-18 15:30:00','It is now %l:%M:%S %p');
    
    -- Mengembalikan The hour part is 03.
    SELECT TO_CHAR(DATETIME '2025-07-18 15:30:00','The hour part is %I');
    
    -- Mengembalikan Day 189 of year 25, July(Jul|Jul), day 08(8), Tuesday(Tue), 15:30:00 PM.
    SELECT TO_CHAR(DATETIME '2025-07-08 15:30:00','Day %j of year %y, %B(%b|%h), day dd(%e), %A(%a), %T %p');
    
    -- Mengembalikan The date 2025-07-08 is the 2nd day of the week.
    SELECT TO_CHAR(DATETIME '2025-07-08 15:30:00','The date %F is the %u day of the week');
    
    -- Mengembalikan NULL.
    SELECT TO_CHAR(DATE "2023-12-25", NULL);
  • Contoh 2: Parameter input bertipe STRING.

    Untuk proyek MaxCompute yang menggunakan edisi tipe data versi 1.0, jika parameter date bertipe STRING dan formatnya sesuai dengan format yyyy-mm-dd hh:mi:ss, maka nilai tersebut secara implisit dikonversi ke tipe DATETIME.

    -- Mengatur edisi tipe data ke 1.0.
    SET odps.sql.type.system.odps2=false;
    SET odps.sql.hive.compatible=false;
    
    -- Parameter input bertipe STRING yang sesuai dengan format DATETIME.
    -- Mengembalikan 20250718.
    SELECT TO_CHAR('2025-07-18 00:00:00', 'yyyymmdd');
  • Contoh 3: Parameter input bertipe TIMESTAMP.

    Saat parameter bertipe TIMESTAMP, Anda dapat menentukan zona waktu. Jika tidak ditentukan, zona waktu sesi atau proyek saat ini digunakan secara default.

    -- Zona waktu proyek saat ini adalah Asia/Shanghai.
    SET odps.sql.timezone=Asia/Shanghai;
    
    -- Mengembalikan 2025-07-20 07:30:00.123456.
    SELECT TO_CHAR(TIMESTAMP "2025-07-20 07:30:00.123456", "%Y-%m-%d %H:%M:%E*S");
    
    -- Mengembalikan 2025-07-20 07:30:00+08:00.
    SELECT TO_CHAR(TIMESTAMP "2025-07-20 07:30:00", "%Y-%m-%d %H:%M:%S%Ez");
    
    -- Mengembalikan 2025-07-20 07:30:00.
    SELECT TO_CHAR(TIMESTAMP "2025-07-20 07:30:00", "%Y-%m-%d %H:%M:%S", "Asia/Shanghai");
     
    -- Mengembalikan 20250720 06:30:00.
    SELECT TO_CHAR(TIMESTAMP "2025-07-20 07:30:00", "yyyymmdd hh:mi:ss", "Asia/Bangkok");
    
    -- Mengembalikan 2025-07-20 09:30:00.123.
    SELECT TO_CHAR(TIMESTAMP "2025-07-20 07:30:00.123456789", "%Y-%m-%d %H:%M:%S.ff3", "Australia/Sydney");
    
    -- Mengembalikan 2025-07-19 23:30:00.
    SELECT TO_CHAR(TIMESTAMP "2025-07-20 07:30:00.123456", "%Y-%m-%d %H:%M:%S", "Etc/GMT");
    
    -- Mengembalikan 2025-07-19 23:30:00Saturday.
    SELECT TO_CHAR(TIMESTAMP "2025-07-20 07:30:00.123456", "%Y-%m-%d %H:%M:%S%A", "Etc/GMT");
    
    -- Mengembalikan NULL.
    SELECT TO_CHAR(TIMESTAMP "2025-07-20 07:30:00.123456", NULL, "Etc/GMT");
  • Contoh 4: Parameter input bertipe TIMESTAMP_NTZ.

    Saat parameter bertipe TIMESTAMP_NTZ, Anda dapat menentukan zona waktu. Jika tidak ditentukan, zona waktu UTC digunakan secara default.

    -- Mengembalikan The date and time is 2025-07-20 07:30:00.123456.
    SELECT TO_CHAR(TIMESTAMP_NTZ "2025-07-20 07:30:00.123456" ,"The date and time is %Y-%m-%d %H:%M:%E6S");
    
    -- Mengembalikan 2025-07-20 07:30:00.
    SELECT TO_CHAR(TIMESTAMP_NTZ "2025-07-20 07:30:00", "%Y-%m-%d %H:%M:%S", "Etc/GMT");
    
    -- Mengembalikan 2025-07-20 Sunday 15:30:00.
    SELECT TO_CHAR(TIMESTAMP_NTZ "2025-07-20 07:30:00", "yyyy-mm-dd %A hh:mi:ss", "Asia/Shanghai");
    
    -- Mengembalikan 2025-07-20 14:30:00 and the millisecond part is 123.
    SELECT TO_CHAR(TIMESTAMP_NTZ "2025-07-20 07:30:00.123456789", "yyyy-mm-dd hh:mi:ss and the millisecond part is ff3", "Asia/Bangkok");
    
    -- Mengembalikan NULL.
    SELECT TO_CHAR(TIMESTAMP_NTZ "2025-07-20 07:30:00",  NULL);

Fungsi terkait

TO_CHAR merupakan fungsi tanggal dan fungsi string.

  • Untuk informasi selengkapnya tentang fungsi yang terkait dengan perhitungan dan konversi tanggal, lihat Fungsi tanggal.

  • Untuk informasi selengkapnya tentang fungsi untuk pencarian dan konversi string, lihat Fungsi string.