Вы не сказали нам, что именно содержит содержимое этой таблицы, но что-то вроде этого должно работать:
Добавьте новый столбец timestamp
(и, пожалуйста, найдите лучшее имя, чем "timestamp"
илиts_column
для него)
alter table the_table add ts_column timestamp;
Затем необходимо обновить данные
update the_table
set ts_column = to_timestamp(concat("date", ' ', "time"), 'yyyy-mm-dd hh24:mi:ss')
where "date" is not null;
Выше предполагается, что дата хранится в столбце с именем "date"
и время сохраняется встолбец с именем "time"
форматируется как значения даты и времени ISO.Если это не так, вам нужно настроить параметр на функцию to_timestamp()
.Подробнее о маске формата см. Руководство
. Затем удалите старые столбцы:
alter table the_table drop "date", drop "time";
Чтобы извлечь год из даты или отметки времениВ столбце используйте функцию extract :
where extract(year from ts_column) = 2018
Обратите внимание, что приведенное выше не сможет использовать индекс для ts_column
для ускорения запроса.
Альтернативный способ записи:
where ts_column >= date '2018-01-01'
and ts_column < date '2019-01-01';
, который может использовать индекс для ts_column