Sentencia Case en SQL Developer

Estoy usando SQL Developer y estoy intentando extraer el mes de una fecha, con la condición de que si tiene un solo dígito le ponga un cero delante y si tiene 2 dígitos lo escriba como viene. Por ejemplo si es Enero debería escribir 01 aunque venga 1, si es Dicieembre escribiría 12, que es lo que viene.

Uso la siguiente sentencia:

select case

when extract(month from FECHA_ALTA)=8 then '0' || extract(month from fecha_alta)

when extract(month from FECHA_ALTA)>=10 then extract(month from fecha_alta) end as mes

From tabla

Pero me da el error "tipos de dato inconsistentes: se esperaba CHAR se ha obtenido NUMBER"

¿Saben qué puede ser?

1 Respuesta

Respuesta
1

El error te da, por que no ha transformado automáticamente el mes a caracter. Prueba lo siguiente:

select case
when extract(month from FECHA_ALTA)=8 
    then '0' || extract(month from fecha_alta)
when extract(month from FECHA_ALTA)>=10 
    then to_char(extract(month from fecha_alta)
)end as mes
From tabla

¿Por qué no utilizas la función de conversión de tiempo a carácter aplicando la mascara adecuada?

SELECT TO_CHAR(FECHA_ALTA, ''MM') FROM tabla;

Mas ejemplos de mascaras de tiempo en Oracle

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas