ROUND, typically applied to numbers, also work with dates and timestamps.
ROUND rounds the date to a specified point.
v_dt:= ROUND (DATE|TIMESTAMP|INTERVAL value[,PRECISION]);
Rather than numeric precision, here you use date format masks.
For example, 'YYYY' truncates the date to years, and 'MM' to a month.
If you don't specify any precision, the default is day ('DD').
You can't specify a combination of format masks.
Only one can be specified at a time.
SQL> declare
2 v_dt DATE;
3 v_form_tx VARCHAR2(25):='YYYY-MM-DD HH24:MI:SS';
4 begin
5 v_dt:=round(sysdate,'HH');
6 DBMS_OUTPUT.put_line(to_char(v_dt,v_form_tx));
7 end;
8 /
2007-06-09 21:00:00
PL/SQL procedure successfully completed.
SQL>