Toda vez que alguém coloca a máscara 'IW' para saber qual o número da semana do ano e a data bate com por exemplo '30/12/2013' o resultado sai '01-2013', ou seja ERRADO! pois o correto seria '01-2014', sendo assim, ao invés de deixar a máscara dessa forma:
SELECT To_Char(To_Date('30/12/2013'), 'IW - YYYY')
FROM dual;
SELECT To_Char(To_Date('30/12/2013'), 'IW - IYYY')
FROM dual;
A minha duvida é a respeito de uma função que eu estava tentando criar para automatizar isso, e ela ficou dessa forma:
CREATE OR REPLACE FUNCTION first_correct(p_dat DATE)
RETURN VARCHAR2 IS
v_dat_res DATE;
BEGIN
v_dat_res := To_Char(to_date(p_dat), 'IW - IYYY');
RETURN (v_dat_res);
END;
E quando executo por exemplo:
SELECT first_correct('30/12/2013')
FROM dual;
Recebo este erro do Oracle:
ORA - 01843: not a valid month.
Alguém tem alguma ideia do que poderia estar errado com a função ou com a ideia?
Valeu abraço