Что мне нужно, так это преобразование даты в полугодие:
Я не нашел ничего подобного здесь Округление и усечение в Oracle
Значит, встроенной функции не существует? Я довольно озадачен, потому что это не очень редкий случай использования. Или я что-то пропустил?
Простая арифметика:
SELECT (EXTRACT(MONTH FROM somedate)-1)/6+1
Я бы просто использовал EXTRACT():
EXTRACT()
SELECT CEIL(EXTRACT(MONTH FROM mydate)/6) FROM mytable;
Просто используйте выражение case:
case
select (case when extract(month from datecol) <= 6 then 1 else 2 end) as half_year