全部产品
Search
文档中心

PolarDB:ROUND

更新时间:Jul 02, 2025

Fungsi ROUND mengembalikan nilai tanggal yang dibulatkan menggunakan format template tertentu.

Jika format template tidak ditentukan dan tipe parameternya adalah DATE atau TIMESTAMP, fungsi ini membulatkan tanggal ke hari terdekat. Jika tipe parameternya adalah INTERVAL, fungsi ini mengekstrak jumlah bulan dan hari dari nilai tanggal tersebut. Kemudian, fungsi ini menghitung total jumlah hari berdasarkan asumsi bahwa setiap bulan memiliki 30 hari, lalu mengembalikan hasilnya.

Tabel berikut menunjukkan format template yang dapat digunakan untuk fungsi ROUND.

Tabel 1. Template tanggal untuk fungsi ROUND
FormatDeskripsi
CC, SCCMengembalikan 1 Januari, CC01. Jika angka dua digit setelah CC kurang dari atau sama dengan 50, CC adalah dua digit pertama dari tahun yang ditentukan. Jika angka dua digit setelah CC lebih besar dari 50, CC adalah dua digit pertama dari tahun yang ditentukan ditambah 1.
SYYY, YYYY, YEAR, SYEAR, YYY, YY, YMengembalikan 1 Januari, YYYY. Jika tanggal adalah 30 Juni atau sebelumnya dari tahun yang ditentukan, fungsi ini mengembalikan 1 Januari dari tahun yang ditentukan. Jika tanggal adalah 1 Juli atau setelahnya dari tahun yang ditentukan, fungsi ini mengembalikan 1 Januari dari tahun berikutnya.
IYYY, IYY, IY, IMengembalikan tanggal awal tahun ISO. Jika tanggal adalah 30 Juni atau sebelumnya, fungsi ini mengembalikan tanggal awal tahun ISO saat ini. Jika tanggal adalah 1 Juli atau setelahnya, fungsi ini mengembalikan tanggal awal tahun ISO berikutnya.
Catatan Setiap tahun ISO dimulai pada hari Senin pertama tahun tersebut. Dalam tahun ISO, Senin adalah hari pertama dalam seminggu dan setiap minggu memiliki tujuh hari dari Senin hingga Minggu. Minggu pertama berisi setidaknya empat hari dari tahun baru. Oleh karena itu, tahun ISO bisa dimulai dari Desember tahun sebelumnya.
QMengembalikan hari pertama kuartal. Jika tanggal adalah hari ke-15 atau sebelumnya dari bulan kedua kuartal tersebut, fungsi ini mengembalikan hari pertama kuartal saat ini. Jika tanggal adalah hari ke-16 atau setelahnya dari bulan kedua kuartal tersebut, fungsi ini mengembalikan hari pertama kuartal berikutnya.
MONTH, MON, MM, RMMengembalikan hari pertama bulan. Jika tanggal adalah hari ke-15 atau sebelumnya dari suatu bulan, fungsi ini mengembalikan hari pertama bulan saat ini. Jika tanggal adalah hari ke-16 atau setelahnya dari suatu bulan, fungsi ini mengembalikan hari pertama bulan berikutnya.
WWMengembalikan minggu yang paling dekat dengan tanggal saat ini.
IWMembulatkan tanggal ke minggu ISO terdekat.
WMembulatkan nilai tanggal ke minggu terdekat. Tanggal awal minggu dianggap sebagai hari pertama bulan.
DDD, DD, JMembulatkan nilai tanggal ke hari terdekat.
DAY, DY, DMembulatkan nilai tanggal ke hari Minggu terdekat.
HH, HH12, HH24Membulatkan nilai tanggal ke jam terdekat.
MIMembulatkan nilai tanggal ke menit terdekat.

Contoh-contoh berikut menjelaskan cara menggunakan fungsi ROUND.

Pada contoh-contoh berikut, setiap nilai tanggal dibulatkan ke awal abad terdekat.

SELECT TO_CHAR(ROUND(TO_DATE('1950','YYYY'),'CC'),'DD-MON-YYYY') "Century" FROM DUAL;

   Century
-------------
 01-JAN-1901
(1 row)

SELECT TO_CHAR(ROUND(TO_DATE('1951','YYYY'),'CC'),'DD-MON-YYYY') "Century" FROM DUAL;

   Century
-------------
 01-JAN-2001
(1 row)    

Pada contoh-contoh berikut, setiap nilai tanggal dibulatkan ke hari pertama tahun terdekat.

SELECT TO_CHAR(ROUND(TO_DATE('30-JUN-1999','DD-MON-YYYY'),'Y'),'DD-MON-YYYY') "Year" FROM DUAL;

    Year
-------------
 01-JAN-1999
(1 row)

SELECT TO_CHAR(ROUND(TO_DATE('01-JUL-1999','DD-MON-YYYY'),'Y'),'DD-MON-YYYY') "Year" FROM DUAL;

    Year
-------------
 01-JAN-2000
(1 row)    
Pada contoh-contoh berikut, setiap nilai tanggal dibulatkan ke hari pertama tahun ISO terdekat. Pada contoh pertama, nilai tanggal dibulatkan ke tahun 2004. Tahun ISO untuk 2004 dimulai pada 29 Desember 2003. Pada contoh kedua, nilai tanggal dibulatkan ke tahun 2005. Tahun ISO untuk 2005 dimulai pada 3 Januari tahun yang sama.
Catatan Setiap tahun ISO dimulai pada hari Senin pertama tahun tersebut. Dalam tahun ISO, Senin adalah hari pertama dalam seminggu dan setiap minggu memiliki tujuh hari dari Senin hingga Minggu. Minggu pertama berisi setidaknya empat hari dari tahun baru. Oleh karena itu, tahun ISO bisa dimulai dari Desember tahun sebelumnya.
SELECT TO_CHAR(ROUND(TO_DATE('30-JUN-2004','DD-MON-YYYY'),'IYYY'),'DD-MON-YYYY') "ISO Year" FROM DUAL;

  ISO Year
-------------
 29-DEC-2003
(1 row)

SELECT TO_CHAR(ROUND(TO_DATE('01-JUL-2004','DD-MON-YYYY'),'IYYY'),'DD-MON-YYYY') "ISO Year" FROM DUAL;

  ISO Year
-------------
 03-JAN-2005
(1 row)    

Pada contoh-contoh berikut, setiap nilai tanggal dibulatkan ke kuartal terdekat.

SELECT ROUND(TO_DATE('15-FEB-07','DD-MON-YY'),'Q') "Quarter" FROM DUAL;

      Quarter
--------------------
 01-JAN-07 00:00:00
(1 row)

SELECT ROUND(TO_DATE('16-FEB-07','DD-MON-YY'),'Q') "Quarter" FROM DUAL;

      Quarter
--------------------
 01-APR-07 00:00:00
(1 row)    

Pada contoh-contoh berikut, setiap nilai tanggal dibulatkan ke bulan terdekat.

SELECT ROUND(TO_DATE('15-DEC-07','DD-MON-YY'),'MONTH') "Month" FROM DUAL;

       Month
--------------------
 01-DEC-07 00:00:00
(1 row)

SELECT ROUND(TO_DATE('16-DEC-07','DD-MON-YY'),'MONTH') "Month" FROM DUAL;

       Month
--------------------
 01-JAN-08 00:00:00
(1 row)

Pada contoh-contoh berikut, setiap nilai tanggal dibulatkan ke minggu terdekat. Oleh karena itu, pada contoh pertama, tanggal hari Senin yang paling dekat dengan 18 Januari adalah 15 Januari. Pada contoh kedua, tanggal hari Senin yang paling dekat dengan 19 Januari 2007 adalah 22 Januari 2007.

SELECT ROUND(TO_DATE('18-JAN-07','DD-MON-YY'),'WW') "Week" FROM DUAL;

        Week
--------------------
 15-JAN-07 00:00:00
(1 row)

SELECT ROUND(TO_DATE('19-JAN-07','DD-MON-YY'),'WW') "Week" FROM DUAL;

        Week
--------------------
 22-JAN-07 00:00:00
(1 row)    

Pada contoh-contoh berikut, setiap nilai tanggal dibulatkan ke minggu ISO terdekat. Minggu ISO dimulai dari hari Senin. Pada contoh pertama, tanggal hari Senin yang paling dekat dengan 1 Januari 2004 adalah 29 Desember 2003. Pada contoh kedua, tanggal hari Senin yang paling dekat dengan 2 Januari 2004 adalah 5 Januari 2004.

SELECT ROUND(TO_DATE('01-JAN-04','DD-MON-YY'),'IW') "ISO Week" FROM DUAL;

      ISO Week
--------------------
 29-DEC-03 00:00:00
(1 row)

SELECT ROUND(TO_DATE('02-JAN-04','DD-MON-YY'),'IW') "ISO Week" FROM DUAL;

      ISO Week
--------------------
 05-JAN-04 00:00:00
(1 row)        

Pada contoh-contoh berikut, setiap nilai tanggal dibulatkan ke minggu terdekat di mana hari awal minggu dianggap sebagai hari pertama bulan.

SELECT ROUND(TO_DATE('05-MAR-07','DD-MON-YY'),'W') "Week" FROM DUAL;

        Week
--------------------
 08-MAR-07 00:00:00
(1 row)

SELECT ROUND(TO_DATE('04-MAR-07','DD-MON-YY'),'W') "Week" FROM DUAL;

        Week
--------------------
 01-MAR-07 00:00:00
(1 row)    

Pada contoh-contoh berikut, setiap nilai tanggal dibulatkan ke hari terdekat.

SELECT ROUND(TO_DATE('04-AUG-07 11:59:59 AM','DD-MON-YY HH:MI:SS AM'),'J') "Day" FROM DUAL;

        Day
--------------------
 04-AUG-07 00:00:00
(1 row)

SELECT ROUND(TO_DATE('04-AUG-07 12:00:00 PM','DD-MON-YY HH:MI:SS AM'),'J') "Day" FROM DUAL;

        Day
--------------------
 05-AUG-07 00:00:00
(1 row)

Pada contoh-contoh berikut, setiap nilai tanggal dibulatkan ke tanggal hari Minggu terdekat.

SELECT ROUND(TO_DATE('08-AUG-07','DD-MON-YY'),'DAY') "Day of Week" FROM DUAL;

    Day of Week
--------------------
 05-AUG-07 00:00:00
(1 row)

SELECT ROUND(TO_DATE('09-AUG-07','DD-MON-YY'),'DAY') "Day of Week" FROM DUAL;

    Day of Week
--------------------
 12-AUG-07 00:00:00
(1 row)

Pada contoh-contoh berikut, setiap nilai tanggal dibulatkan ke jam terdekat.

SELECT TO_CHAR(ROUND(TO_DATE('09-AUG-07 08:29','DD-MON-YY HH:MI'),'HH'),'DD-MON-YY HH24:MI:SS') "Hour" FROM DUAL;

        Hour
--------------------
 09-AUG-07 08:00:00
(1 row)

SELECT TO_CHAR(ROUND(TO_DATE('09-AUG-07 08:30','DD-MON-YY HH:MI'),'HH'),'DD-MON-YY HH24:MI:SS') "Hour" FROM DUAL;

        Hour
--------------------
 09-AUG-07 09:00:00
(1 row)

Pada contoh-contoh berikut, setiap nilai tanggal dibulatkan ke menit terdekat.

SELECT TO_CHAR(ROUND(TO_DATE('09-AUG-07 08:30:29','DD-MON-YY HH:MI:SS'),'MI'),'DD-MON-YY HH24:MI:SS') "Minute" FROM DUAL;

       Minute
--------------------
 09-AUG-07 08:30:00
(1 row)

SELECT TO_CHAR(ROUND(TO_DATE('09-AUG-07 08:30:30','DD-MON-YY HH:MI:SS'),'MI'),'DD-MON-YY HH24:MI:SS') "Minute" FROM DUAL;

       Minute
--------------------
 09-AUG-07 08:31:00
(1 row)

Pada contoh-contoh berikut, setiap nilai tanggal bertipe INTERVAL dibulatkan menjadi bilangan bulat.

SELECT ROUND(TIMESTAMP '2020-10-10 10:22:22' - TIMESTAMP '2020-10-05 12:22:22');
 round 
-------
     4
(1 row)

SELECT ROUND(INTERVAL '1 year 13 months 3 days');
 round 
-------
   753
(1 row)