Пожалуйста, помогите мне преобразовать следующий запрос, написанный в терадате, в oracle sql.
SELECT cast((substr( CAST(CURRENT_TIMESTAMP(0) AS varchar(19)), 1,4) as decimal(18,0)) as termid from source1
Ваш текущий расчет извлекает год как числовое значение c. Как в Teradata, так и в Oracle этого легко достичь, используя
extract(year from current_timestamp)
Если вы хотите текущий год, это будет сделано в Oracle:
select to_char(Current_Timestamp(0),'YYYY') termid from dual;
Вы должны явно использовать to_char с отметкой времени, поскольку формат отметки времени может содержать слова
SELECT cast(substr( to_char(current_timestamp(0),'DDMM'), 1,4) as decimal(18,0)) as termid from dual