sacar el día de una fecha

Daniel
15 de Mayo del 2003
Buenas,
necesito asignarle a una variable el día de una fecha, a otra el mes y a otra el año, como hago para retorna eso teniendo la fecha como un tipo de dato DATE?, y que me saque cada uno de ellos como un varchar2 o integer?
Gracias

tbanos
15 de Mayo del 2003
Lo puedes hacer con la función TO_CHAR(numero ó fecha,\'formato\')
Esta función convierte un número o fecha en una cadena de caracteres VARCHAR2 con el modelo de formato que le indiques

El formato se debe encerrar entre comillas simples y es “casesensitive”

El formato puede incluir cualquier elemento de formato de fecha válido.

Separar la fecha del formato con una coma.

Elementos del Modelo Formato de Fecha
\'YYYY\' Año completo en número
\'YEAR\' Año en letras
\'MM\' Nº del mes con dos dígitos
\'MONTH\' Nombre completo del mes
\'DY\' Abreviatura de tres letras del día
\'DAY\' Nombre completo del día

Fíjate que influye la manera en que escribes el formato, es decir, si pones mayuscula o minuscula:

SELECT TO_CHAR(sysdate,\'DAY\')
FROM DUAL;
TO_CHAR(S
---------
JUEVES


SQL> SELECT TO_CHAR(sysdate,\'Day\')
2 FROM DUAL;

TO_CHAR(S
---------
Jueves

Otros ejemplos:

declare
v_fecha varchar2(50);
begin
v_fecha:= to_char(to_date(\'15-05-2003\',\'dd-mm-yy\'),\'Month\');
dbms_output.put_line(v_fecha);
end;
/
Mayo

declare
v_fecha varchar2(50);
begin
v_fecha:= to_char(to_date(\'15-05-2003\',\'dd-mm-yy\'),\'DAY,MONTH\');
dbms_output.put_line(v_fecha);
end;
/
JUEVES,MAYO

Procedimiento PL/SQL terminado correctamente.