Publicado el Dejar un comentario

Obtener año, mes o día de un campo fecha en Oracle con EXTRACT.

A veces es necesario obtener sólo una parte de una fecha de un campo tipo datetime en sentencias SQL en Oracle. En un post pasado se explicó como obtener sólo el año, mes o día con la función to_char(). Ahora vamos a ver cómo obtener los mismos datos pero con la función extract().

En el ejemplo siguiente vamos a ver como obtener el día, mes o año de la fecha actual de la base de datos oracle:

-- Obtiene el día 
SELECT EXTRACT(DAY FROM sysdate) FROM dual;

--Obtiene el mes
SELECT EXTRACT(MONTH FROM sysdate) FROM dual;

--Obtiene el año 
SELECT EXTRACT(YEAR FROM sysdate) FROM dual;

A diferencia de la función to_char() que regresa un tipo caracter o alfanumérico, la función extract() regresa el resultado de tipo numérico.

La función extract() también puede extraer la hora, minuto y segundo de un dato tipo datetime:

-- Obtiene la hora 
SELECT EXTRACT(HOUR FROM systimestamp) FROM dual;

--Obtiene el minuto
SELECT EXTRACT(MINUTE FROM systimestamp) FROM dual;

--Obtiene el segundo 
SELECT EXTRACT(SECOND FROM systimestamp) FROM dual;

¡Espero y les sea útil!

 

Publicado el Dejar un comentario

ORA-32033: unsupported column aliasing

Oracle arroja este error cuando se utiliza WITH en alguna consulta y se ha olvidado poner la palabra reservada AS. Por ejemplo en este caso:

WITH mialias 
(
  SELECT *
  FROM mitabla
)
SELECT *
FROM mialias;

Lo correcto sería:

WITH mialias AS
(
  SELECT *
  FROM mitabla
)
SELECT *
FROM mialias;

No olvides visitar a los patrocinadores (da click en los anuncios) para seguir soportando este sitio.

¡Gracias!

Publicado el Dejar un comentario

Listar las tablas de un usuario en Oracle

A veces necesitamos saber las tablas pertenecientes a un usuario y/o esquema en Oracle. Si queremos saber las tablas que le pertenecen al usuario con el que cual nos encontramos conectados actualmente a la base de datos, usamos la siguiente instrucción sql:

select table_name from user_tables order by table_name;

La instrucción anterior además ordena la salida por el campo table_name.

Si lo que queremos saber son las tablas de otro usuario o esquema entonces usaríamos la siguiente sentencia sql:

select table_name from all_tables where owner ='JUAN' order by table_name;

Igual que la anterior, el resultado lo ordenamos por table_name.

Espero que les sea útil este post.

¡Saludos!