Предполагая, что вы используете базу данных Oracle (основываясь на упоминании подсказки о двойной таблице), вы можете сделать что-то вроде этого:
select to_char(to_date('2001-07-20 10:40:12', 'YYYY-MM-DD HH:MI:SS') - 2, 'DD-MON-YY HH:MI:SS') from dual;
select to_char(to_date('2001-07-20 10:40:12', 'YYYY-MM-DD HH:MI:SS') + 1/2, 'DD-MON-YY HH:MI:SS') from dual;
select to_char(to_date('2001-07-20 10:40:12', 'YYYY-MM-DD HH:MI:SS') + 4.5/24, 'DD-MON-YY HH:MI:SS') from dual;
В этом решении используется тот факт, что добавление дроби кдата фактически добавит соответствующую часть дня к этой дате.Остальная часть кода касается преобразования в различные форматы даты и обратно.