All Products
Search
Document Center

IoT Platform:Fungsi Tanggal

Last Updated:Jun 21, 2025

Topik ini menjelaskan sintaksis, parameter, dan contoh fungsi tanggal yang didukung oleh fitur analisis data. Anda dapat memilih fungsi tanggal yang sesuai untuk melakukan perhitungan atau konversi berdasarkan kebutuhan bisnis Anda.

Fungsi

Deskripsi

CURRENT_TIMESTAMP

Mengembalikan timestamp saat ini.

DATEADD

Mengubah nilai tanggal berdasarkan unit waktu yang ditentukan oleh datepart dan interval yang ditentukan oleh delta.

DATEDIFF

Menghitung perbedaan antara dua nilai tanggal berdasarkan unit waktu yang ditentukan oleh datepart.

FROM_UNIXTIME

Mengonversi timestamp UNIX tipe BIGINT menjadi nilai tanggal tipe DATETIME.

FROM_UTC_TIMESTAMP

Mengonversi timestamp UTC menjadi timestamp dalam zona waktu tertentu.

GETDATE

Mengembalikan waktu sistem saat ini sebagai nilai tanggal.

ISDATE

Menentukan apakah string tanggal dapat dikonversi menjadi nilai tanggal dalam format tertentu.

TO_DATE

Mengonversi string menjadi nilai tanggal dalam format tertentu.

TO_CHAR

Mengonversi nilai tanggal menjadi string dalam format tertentu.

UNIX_TIMESTAMP

Mengonversi nilai tanggal menjadi timestamp UNIX yang merupakan bilangan bulat.

LAST_DAY

Mengembalikan hari terakhir dari bulan di mana nilai tanggal jatuh.

CURRENT_TIMESTAMP

  • Sintaksis

    timestamp current_timestamp()
  • Deskripsi

    Mengembalikan timestamp saat ini. Nilai kembali tidak tetap.

  • Nilai Kembali

    Nilai bertipe TIMESTAMP dikembalikan.

  • Contoh

    -- Nilai kembali adalah '2017-08-03 11:50:30.661'. 
        current_timestamp(); 

DATEADD

  • Sintaksis

    datetime dateadd(datetime <date>, bigint <delta>, string <datepart>)
  • Deskripsi

    Mengubah nilai tanggal berdasarkan unit waktu yang ditentukan oleh datepart dan interval yang ditentukan oleh delta. Untuk menambahkan atau mengurangi interval ke atau dari waktu saat ini, Anda dapat memanggil fungsi ini bersama dengan fungsi GETDATE.

  • Parameter

    • tanggal: Wajib. Nilai bertipe DATETIME.

      Jika nilai input bertipe STRING, nilai tersebut akan dikonversi secara implisit menjadi tipe DATETIME sebelum perhitungan. Jika nilai input bertipe lain, kesalahan akan dikembalikan.

    • delta: Wajib. Interval yang ingin ditambahkan ke atau dikurangi dari komponen tertentu dari nilai tanggal. Nilai parameter ini harus bertipe BIGINT. Jika nilai delta lebih besar dari 0, interval ditambahkan ke nilai tanggal. Sebaliknya, interval dikurangi dari nilai tanggal.

      Jika nilai input bertipe STRING atau DOUBLE, nilai tersebut akan dikonversi secara implisit menjadi tipe BIGINT sebelum perhitungan. Jika nilai input bertipe lain, kesalahan akan dikembalikan.

      null
      • Jika Anda menambahkan atau mengurangi interval yang ditentukan oleh delta berdasarkan unit waktu yang ditentukan oleh datepart, carry atau return pada komponen tanggal yang lebih signifikan mungkin terjadi. Komponen tahun, bulan, jam, menit, dan detik dihitung menggunakan sistem angka yang berbeda. Komponen tahun menggunakan sistem angka basis-10. Komponen bulan menggunakan sistem angka basis-12. Komponen jam menggunakan sistem angka basis-24. Komponen menit dan detik menggunakan sistem angka basis-60.

      • Jika fungsi DATEADD menambahkan interval yang ditentukan oleh delta ke komponen bulan dari nilai tanggal dan operasi ini tidak menyebabkan overflow pada komponen hari, Anda dapat mempertahankan nilai komponen hari. Sebaliknya, Anda harus mengatur nilai komponen hari ke hari terakhir dari bulan yang ditentukan.

    • datepart: Wajib. Bagian tanggal yang ingin diubah dalam nilai tanggal. Nilainya adalah konstanta bertipe STRING. Jika format nilai input tidak valid atau nilai input bukan konstanta bertipe STRING, kesalahan akan dikembalikan.

      Nilai parameter ini ditentukan sesuai dengan aturan konversi antara tipe STRING dan DATETIME. Nilai yyyy menunjukkan bahwa fungsi DATEADD menambahkan atau mengurangi interval ke komponen tahun dari nilai tanggal. Nilai mm menunjukkan bahwa fungsi DATEADD menambahkan atau mengurangi interval ke komponen bulan dari nilai tanggal. Nilai dd menunjukkan bahwa fungsi DATEADD menambahkan atau mengurangi interval ke komponen hari dari nilai tanggal. Untuk informasi lebih lanjut tentang aturan konversi tipe data, lihat Konversi antara tipe STRING dan DATETIME. Format Tanggal/Waktu Ekstensi (EDTF) juga didukung, seperti -year, -month, -mon, -day, dan -hour.

  • Nilai Kembali

    Nilai bertipe DATETIME dikembalikan. Jika parameter input diatur ke NULL, NULL dikembalikan.

  • Contoh

    • Contoh 1: trans_date=2005-02-28 00:00:00.

      -- Nilai kembali adalah 2005-03-01 00:00:00. Setelah satu hari ditambahkan, hasilnya setelah hari terakhir Februari. Hari pertama Maret dikembalikan.
          dateadd(trans_date, 1, 'dd');
      
      -- Nilai kembali adalah 2005-02-27 00:00:00. Satu hari dikurangi.
          dateadd(trans_date, -1, 'dd');
      
      -- Nilai kembali adalah 2006-10-28 00:00:00. Setelah 20 bulan ditambahkan, bulan meluap, dan nilai tahun bertambah 1.
          dateadd(trans_date, 20, 'mm');
      
      -- Nilai kembali adalah 2005-03-28 00:00:00.
          dateadd(trans_date, 1, 'mm');
    • Contoh 2: trans_date=2005-01-29 00:00:00.

      -- Nilai kembali adalah 2005-02-28 00:00:00. Februari 2005 hanya memiliki 28 hari. Oleh karena itu, hari terakhir Februari dikembalikan.
          dateadd(trans_date, 1, 'mm');
    • Contoh 3: trans_date2005-03-30 00:00:00.

      -- Nilai kembali adalah 2005-02-28 00:00:00.
          dateadd(trans_date, -1, 'mm');
    • Contoh 4: Hitung waktu saat ini.

      -- Jika waktu saat ini adalah 17 November 2020, 16:31:44, nilai kembali adalah 2020-11-16 16:31:44.
          dateadd(getdate(),-1,'dd');
    • Contoh 5: Konversi eksplisit konstanta bertipe STRING menjadi tipe DATETIME.

      -- Nilai kembali adalah 2005-02-28 00:00:00.
          dateadd(cast("2005-03-30 00:00:00" as datetime), -1, 'mm');

DATEDIFF

  • Sintaksis

    bigint datediff(datetime <date1>, datetime <date2>, string <datepart>)
  • Deskripsi

    Menghitung perbedaan antara date1 dan date2. Perbedaan diukur dalam unit waktu yang ditentukan oleh datepart.

  • Parameter

    • date1 dan date2: Wajib. Nilai bertipe DATETIME. Nilai-nilai tersebut menunjukkan pengurang dan yang dikurangi. Jika nilai input bertipe STRING, nilai tersebut akan dikonversi secara implisit menjadi tipe DATETIME sebelum perhitungan. Jika nilai input bertipe lain, kesalahan akan dikembalikan.

    • datepart: Wajib. Bagian tanggal yang ingin diubah dalam nilai tanggal. Nilainya adalah konstanta bertipe STRING. Jika format nilai input tidak valid atau nilai input bukan konstanta bertipe STRING, kesalahan akan dikembalikan.

      Nilai parameter ini ditentukan sesuai dengan aturan konversi antara tipe STRING dan DATETIME. Nilai yyyy menunjukkan bahwa fungsi DATEADD menambahkan atau mengurangi interval ke komponen tahun dari nilai tanggal. Nilai mm menunjukkan bahwa fungsi DATEADD menambahkan atau mengurangi interval ke komponen bulan dari nilai tanggal. Nilai dd menunjukkan bahwa fungsi DATEADD menambahkan atau mengurangi interval ke komponen hari dari nilai tanggal. Untuk informasi lebih lanjut tentang aturan konversi tipe data, lihat Konversi antara tipe STRING dan DATETIME. Format Tanggal/Waktu Ekstensi (EDTF) juga didukung, seperti -year, -month, -mon, -day, dan -hour.

      null

      Fungsi ini mengabaikan unit yang lebih rendah berdasarkan unit waktu yang ditentukan oleh datepart dan kemudian menghitung hasilnya.

  • Nilai Kembali

    Nilai bertipe BIGINT dikembalikan. Jika parameter input diatur ke NULL, NULL dikembalikan. Jika date1 lebih awal dari date2, nilai negatif dikembalikan.

  • Contoh

    • Contoh 1: start=2005-12-31 23:59:59, end=2006-01-01 00:00:00.

      -- Nilai kembali adalah 1.
          datediff(end, start, 'dd'); 
      
      -- Nilai kembali adalah 1.
          datediff(end, start, 'mm');
      
      -- Nilai kembali adalah 1.
          datediff(end, start, 'yyyy');
      
      -- Nilai kembali adalah 1.
          datediff(end, start, 'hh');
      
      -- Nilai kembali adalah 1.
          datediff(end, start, 'mi');
      
      -- Nilai kembali adalah 1.
          datediff(end, start, 'ss');
      
      -- Nilai kembali adalah 1800.
          datediff(datetime'2013-05-31 13:00:00', '2013-05-31 12:30:00', 'ss');
      
      -- Nilai kembali adalah 30.
          datediff(datetime'2013-05-31 13:00:00', '2013-05-31 12:30:00', 'mi');  
    • Contoh 2: Jika waktu mulai adalah 2018-06-04 19:33:23.234 dan waktu akhir adalah 2018-06-04 19:33:23.250, nilai tanggal yang akurat hingga milidetik tidak menggunakan tipe DATETIME standar dan tidak dapat dikonversi secara implisit menjadi tipe DATETIME. Dalam hal ini, konversi eksplisit diperlukan.

      -- Nilai kembali adalah 16.
          datediff(to_date('2018-06-04 19:33:23.250', 'yyyy-mm-dd hh:mi:ss.ff3'), to_date('2018-06-04 19:33:23.234', 'yyyy-mm-dd hh:mi:ss.ff3') , 'ff3');

FROM_UNIXTIME

  • Sintaksis

    datetime from_unixtime(bigint <unixtime>)
  • Deskripsi

    Mengonversi unixtime bertipe BIGINT menjadi nilai tanggal bertipe DATETIME.

  • Parameter

    unixtime: Wajib. Nilai tanggal bertipe BIGINT dalam format UNIX. Nilai parameter ini akurat hingga detik. Jika nilai input bertipe STRING, DOUBLE, atau DECIMAL, nilai tersebut akan dikonversi secara implisit menjadi tipe BIGINT sebelum perhitungan.

  • Nilai Kembali

    Nilai bertipe DATETIME dikembalikan. Jika parameter input diatur ke NULL, NULL dikembalikan.

  • Contoh

    -- Nilai kembali adalah 1973-11-30 05:33:09.
        from_unixtime(123456789);

FROM_UTC_TIMESTAMP

  • Sintaksis

    timestamp from_utc_timestamp({any primitive type}*, string <timezone>)
  • Deskripsi

    Mengonversi timestamp UTC menjadi timestamp dalam zona waktu tertentu.

  • Parameter

    • {any primitive type}*: Wajib. Timestamp bertipe TIMESTAMP, DATETIME, TINYINT, SMALLINT, INT, atau BIGINT. Jika nilainya bertipe TINYINT, SMALLINT, INT, atau BIGINT, unit waktu akurat hingga milidetik.

    • timezone: Wajib. Zona waktu tujuan ke dalam mana Anda ingin mengonversi zona waktu saat ini. Misalnya, Anda dapat mengatur parameter ini ke PST.

      Fungsi ini hanya mendukung zona waktu Asia/Shanghai dan tidak mendukung zona waktu GMT+9.

      Waktu UTC merujuk pada waktu di zona waktu UTC+0. Shanghai, Tiongkok berada di zona waktu UTC+8.

  • Nilai Kembali

    Nilai bertipe TIMESTAMP dikembalikan.

  • Contoh

    -- Unit nilai input adalah milidetik dan 2017-08-01 04:24:00.0 dikembalikan.
        from_utc_timestamp(1501557840000, 'PST'); 
    
    -- Nilai kembali adalah 1970-01-30 08:00:00.0.
        from_utc_timestamp('1970-01-30 16:00:00','PST'); 
    
    -- Nilai kembali adalah 1970-01-29 16:00:00.0.
        from_utc_timestamp('1970-01-30','PST') ; 

GETDATE

  • Sintaksis

    datetime getdate()
  • Deskripsi

    Mengembalikan waktu sistem saat ini.

  • Nilai Kembali

    Tanggal dan waktu saat ini dikembalikan, yang bertipe DATETIME.

ISDATE

  • Sintaksis

    boolean isdate(string <date>, string <format>)
  • Deskripsi

    Menentukan apakah string tanggal dapat dikonversi menjadi nilai tanggal dalam format tertentu. Jika string tanggal dapat dikonversi menjadi nilai tanggal dalam format tertentu, true dikembalikan. Sebaliknya, false dikembalikan.

  • Parameter

    • date: Wajib. Nilai bertipe STRING. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, nilai tersebut akan dikonversi secara implisit menjadi tipe STRING sebelum perhitungan. Jika nilai input bertipe lain, kesalahan akan dikembalikan.

    • format: Wajib. Konstanta bertipe STRING. Parameter ini tidak mendukung EDTF. Jika nilai input bertipe lain, kesalahan akan dikembalikan. Jika string format redundan ada dalam format, fungsi ini mengonversi string tanggal yang sesuai dengan string format pertama menjadi nilai tanggal. String lainnya dianggap sebagai pemisah.

  • Nilai Kembali

    Nilai bertipe BOOLEAN dikembalikan. Jika parameter input diatur ke NULL, NULL dikembalikan.

  • Contoh

    -- Nilai kembali adalah true.
    isdate("1234-yyyy", "yyyy-yyyy");

TO_DATE

  • Sintaksis

    datetime to_date(string <date>, string <format>)
  • Deskripsi

    Mengonversi string menjadi nilai tanggal dalam format tertentu.

  • Parameter

    • date: Wajib. Nilai bertipe STRING. Parameter ini menentukan string tanggal yang ingin dikonversi. Jika nilai input bertipe BIGINT, DOUBLE, DECIMAL, atau DATETIME, nilai tersebut akan dikonversi secara implisit menjadi tipe STRING sebelum perhitungan. Jika nilai input bertipe lain atau string kosong, kesalahan akan dikembalikan.

    • format: Wajib. Konstanta bertipe STRING. Parameter ini menentukan format tanggal. Jika nilai input bertipe lain, kesalahan akan dikembalikan. format tidak mendukung EDTF. Karakter lain diabaikan sebagai karakter tidak valid selama penguraian.

      Nilai format harus mencakup yyyy. Jika tidak,NULL dikembalikan. Jika string format redundan ada dalam format, fungsi ini mengonversi string tanggal yang sesuai dengan string format pertama menjadi nilai tanggal. String lainnya dianggap sebagai pemisah. Sebagai contoh, to_date("1234-2234", "yyyy-yyyy") mengembalikan 1234-01-01 00:00:00.

      format terdiri dari berbagai komponen tanggal. yyyy menunjukkan tahun 4 digit. mm menunjukkan bulan 2 digit. dd menunjukkan hari 2 digit. hh menunjukkan jam berdasarkan sistem 24 jam. mi menunjukkan menit 2 digit. ss menunjukkan detik 2 digit. ff3 menunjukkan milidetik 3 digit.

  • Nilai Kembali

    Nilai bertipe DATETIME dikembalikan. Nilai kembali dalam format yyyy-mm-dd hh:mi:ss. Jika parameter input diatur ke NULL, NULL dikembalikan.

  • Contoh

    -- Nilai kembali adalah 2010-12-03 00:00:00.
        to_date('Test 2010-12*03', 'Test yyyy-mm*dd');
    
    -- Nilai kembali adalah 2008-07-18 00:00:00.
        to_date('20080718', 'yyyymmdd');
    
    -- Nilai kembali adalah 2008-07-18 20:30:00.
        to_date('200807182030','yyyymmddhhmi');
    
    -- '2008718' tidak dapat dikonversi menjadi nilai tanggal standar, dan kesalahan dikembalikan. Nilai tersebut harus ditulis sebagai '20080718'.
        to_date('2008718', 'yyyymmdd');
    
    -- 'Test2010-12*3' tidak dapat dikonversi menjadi nilai tanggal standar, dan kesalahan dikembalikan. Nilai tersebut harus ditentukan sebagai 'Test 2010-12*03'.
        to_date('Test 2010-12*3', 'Test yyyy-mm*dd');
    
    -- '2010-24-01' tidak dapat dikonversi menjadi nilai tanggal standar, dan kesalahan dikembalikan. Nilai tersebut harus ditentukan sebagai '2010-01-24'.
        to_date('2010-24-01', 'yyyy');
    
    -- Nilai kembali adalah 2018-10-30 15:13:12.
        to_date('20181030 15-13-12.345','yyyymmdd hh-mi-ss.ff3');

TO_CHAR

  • Sintaksis

    string to_char(datetime <date>, string <format>)
  • Deskripsi

    Mengonversi nilai tanggal bertipe DATETIME menjadi string dalam format tertentu.

  • Parameter

    • date: Wajib. Nilai tanggal bertipe DATETIME. Parameter ini menentukan nilai tanggal yang ingin dikonversi. Jika nilai input bertipe STRING, nilai tersebut akan dikonversi secara implisit menjadi tipe DATETIME sebelum perhitungan. Jika nilai input bertipe lain, kesalahan akan dikembalikan.

    • format: Wajib. Konstanta bertipe STRING. Parameter ini menentukan format tanggal. Jika nilainya bukan konstanta atau bukan tipe STRING, kesalahan akan dikembalikan. Dalam parameter format, bagian format tanggal diganti dengan data terkait dan karakter lainnya tetap tidak berubah dalam output.

  • Nilai Kembali

    Nilai bertipe STRING dikembalikan. Jika parameter input diatur ke NULL, NULL dikembalikan.

  • Contoh

    -- Nilai kembali adalah 20080718.
        to_char(datetime'2008-07-18 00:00:00', 'yyyymmdd');
    
    -- 'Test 2010-12*3' tidak dapat dikonversi menjadi nilai tanggal standar, dan kesalahan dikembalikan. Nilai tersebut harus ditentukan sebagai 'Test 2010-12*03'.
        to_char(datetime'Test 2010-12*3', 'Test yyyy-mm*dd');
    
    -- '2010-24-01' tidak dapat dikonversi menjadi nilai tanggal standar, dan kesalahan dikembalikan. Nilai tersebut harus ditentukan sebagai '2010-01-24'.
        to_char(datetime'2010-24-01', 'yyyy');
    
    -- '2008718' tidak dapat dikonversi menjadi nilai tanggal standar, dan kesalahan dikembalikan. Nilai tersebut harus ditentukan sebagai '20080718'.
        to_char(datetime'2008718', 'yyyymmdd');

UNIX_TIMESTAMP

  • Sintaksis

    bigint unix_timestamp(datetime <date>)
  • Deskripsi

    Mengonversi nilai tanggal menjadi timestamp UNIX yang merupakan bilangan bulat.

  • Parameter

    date: Wajib. Nilai bertipe DATETIME. Jika nilai input bertipe STRING, nilai tersebut akan dikonversi secara implisit menjadi tipe DATETIME sebelum perhitungan. Jika nilai input bertipe lain, kesalahan akan dikembalikan. Jika Anda mengaktifkan tipe data baru, konversi implisit gagal. Dalam hal ini, Anda harus memanggil fungsi CAST untuk mengonversi tipe data. Contoh: unix_timestamp(cast(... as datetime)).

  • Nilai Kembali

    Timestamp UNIX bertipe BIGINT dikembalikan. Jika parameter input adalah NULL, NULL dikembalikan.

  • Contoh

    -- Nilai kembali adalah 1237518660.
        unix_timestamp(datetime'2009-03-20 11:11:00');

LAST_DAY

  • Sintaksis

    string last_day(string <date>)
  • Deskripsi

    Mengembalikan hari terakhir dari bulan di mana nilai tanggal jatuh.

  • Parameter

    date: Wajib. Nilai bertipe STRING. Format nilai tanggal harus mencakup setidaknya yyyy-mm-dd. Jika tidak, NULL dikembalikan.

  • Nilai Kembali

    Nilai bertipe STRING dikembalikan. Nilai kembali dalam format yyyy-mm-dd.

  • Contoh

    -- Nilai kembali adalah 2017-03-31.
        last_day('2017-03-04');
    
    -- Nilai kembali adalah 2017-07-31.
        last_day('2017-07-04 11:40:00');
    
    -- Nilai kembali adalah NULL.
        last_day('20170304');

Konversi antara tipe STRING dan tipe DATETIME

Saat melakukan konversi antara tipe STRING dan tipe DATETIME, format yyyy-mm-dd hh:mi:ss digunakan.

Unit waktu

String (tidak peka huruf besar/kecil)

Nilai valid

Tahun

yyyy

0001 - 9999

Bulan

mm

01 - 12

Hari

dd

01 - 28|29|30|31

Jam

hh

00 - 23

Menit

mi

00 - 59

Detik

ss

00 - 59

null
  • Jika digit pertama dari rentang nilai setiap unit waktu adalah 0, 0 tidak dapat dihilangkan. Sebagai contoh, 2014-1-9 12:12:12 adalah format DATETIME yang tidak valid dan tidak dapat dikonversi dari tipe STRING menjadi tipe DATETIME. Harus ditulis sebagai 2014-01-09 12:12:12.

  • Hanya tipe STRING yang memenuhi persyaratan format di atas yang dapat dikonversi menjadi tipe DATETIME. Sebagai contoh, CAST("2013-12-31 02:34:34" AS DATETIME) mengonversi 2013-12-31 02:34:34 bertipe STRING menjadi tipe DATETIME. Demikian pula, jika Anda mengonversi nilai bertipe DATETIME menjadi nilai bertipe STRING, nilai setelah konversi secara otomatis direpresentasikan dalam format yyyy-mm-dd hh:mi:ss.