Uso das funções EXTRACT(YEAR, MONTH e DAY
De DTI Wiki
Quando for necessário extrair ano, mês ou dia de um campo DATE ou TIMESTAMP, deve-se utilizar a função EXTRACT ao invés da combinação das funções TO_NUMBER(TO_CHAR(. Para os campos do tipo TIMESTAMP, a função EXTRACT também pode ser utilizada para hora, minuto e segundo.
Para extrair hora do sistema, recomenda-se a utilização da pseudo coluna LOCALTIMESTAMP, pois a extração de hora com a utilização da pseudo coluna SYSTIMESTAMP trará como resultado a hora de Greenwich.
Exemplo:
SELECT SYSTIMESTAMP, EXTRACT(HOUR FROM SYSTIMESTAMP), EXTRACT(HOUR FROM LOCALTIMESTAMP) FROM dual; SYSTIMESTAMP --------------------------------- 29/06/09 15:08:51,272205 -03:00 EXTRACT(HOURFROMSYSTIMESTAMP) ----------------------------- 18 EXTRACT(HOURFROMLOCALTIMESTAMP) ------------------------------- 15
varano := TO_NUMBER(TO_CHAR(campodata, 'rrrr'));
varano := EXTRACT(YEAR FROM campodata);