Добавление новых столбцов только потому, что "это облегчает ...", редко работает хорошо. Это должно быть значительно проще, если рассматривать ALL . Кроме того, вы рассматривали возможность объединения других столбцов таблиц для создания фактической даты или отметки времени. Тем не менее, иногда есть, чтобы съесть свой торт и съесть его тоже! Добавьте ваши 2 столбца, но сделайте их виртуальными столбцами. Таким образом, ничего, что в данный момент обрабатывает существующий столбец, не нужно менять, и вы получаете столбцы только с датой и временем. Недостаток: это символы, так как ВСЕ столбцы даты (временной отметки) оракула содержат компоненты даты и времени.
create table atable( atable_ts timestamp);
insert into atable values (current_timestamp);
insert into atable values (current_timestamp - interval '6' hour);
insert into atable values (current_timestamp + interval '9' hour);
select * from atable;
alter table atable add (atable_day generated always as
( to_char(extract(year from atable_ts) ) || '-'
|| to_char(extract(month from atable_ts) ) || '-'
|| to_char(extract(day from atable_ts) ) )
,atable_tod generated always as
( to_char(extract(hour from atable_ts) ) || ':'
|| to_char(extract(minute from atable_ts) ) || ':'
|| to_char(extract(second from atable_ts) ) )
);
select * from atable;