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

MySQL: table is marked as crashed and should be repaired

Después de una falla de energía del servidor de aplicaciones, nuestro sistema administrativo comenzó a enviar el error “table is marked as crashed and should be repaired” al querer acceder a cierta tabla de nuestra base datos.

Antes de restaurar dicha tabla desde un respaldo probamos reparar la tabla con la instrucción SQL de MySQL llamada “repair table” desde un cliente SQL de esta forma:

REPAIR TABLE nombre_tabla;

Donde “nombre_tabla” es el nombre de la tabla que esta enviando el error.

Esto funcionó en nuestro caso y no tuvimos necesidad de restaurar la table dañada desde un respaldo.

¡No olviden visitar a los patrocinadores (anuncios de google)!

 

Publicado el Dejar un comentario

psql version 8.4, server version 9.3. Some psql features might not work. CentOS 6.x

Si recibes este mensaje mientras tratas de ejecutar el programa cliente psql para conectarte a postgresql 9.3, es debido a un conflicto de versiones. CentOS 6 lleva por defecto con las utilitarias de conexión de la versión 8.4 y al instalar una versión más actual como la 9.3 puede surgir este conflicto.

Para solucionar este problema sigue los siguientes pasos (a mi me funcionó):

Listamos los paquetes que tenemos instalados de postgresql:

# rpm -qa | grep postgres
postgresql93-contrib-9.3.10-1PGDG.rhel6.x86_64
postgresql-8.4.20-3.el6_6.x86_64
postgresql-devel-8.4.20-3.el6_6.x86_64
postgresql93-9.3.10-1PGDG.rhel6.x86_64
postgresql93-libs-9.3.10-1PGDG.rhel6.x86_64
postgresql-libs-8.4.20-3.el6_6.x86_64
postgresql93-server-9.3.10-1PGDG.rhel6.x86_64
postgresql93-jdbc-9.3.1101-1PGDG.rhel6.x86_64

Como se puede observar en mi caso, tenemos paquetes de la versión antigua 8.4.x. Procedemos a desinstalar dichos paquetes (yo estoy seguro que no estoy usando la versión 8) con un usuario con derechos administrativos (yo uso el usuario root):

#  rpm -e postgresql-devel-8.4.20-3.el6_6.x86_64
#  rpm -e postgresql-8.4.20-3.el6_6.x86_64
#  rpm -e postgresql-libs-8.4.20-3.el6_6.x86_64

Una vez esto hecho, si intentamos ejecutar el  programa cliente psql no funcionará, porque el psql por defecto fue desinstalado y el sistema no lo hallará en la ruta de ejecutables:

# ls /usr/bin/psql
ls: cannot access /usr/bin/psql: No such file or directory

Por lo tanto procedemos con el siguiente comando:

# update-alternatives --install /usr/bin/psql pgsql-psql /usr/pgsql-9.3/bin/psql 930

Una vez realizada la ejecución del comando, entramos con cualquier otro usuario y ejecutamos el programa psql para comprobar que el mensaje ha desaparecido:

$ psql -U postgres
Password for user postgres: 
psql (9.3.10)
Type "help" for help.

postgres=#

¡No olvides visitar a los patrocinadores dando un clic en los anuncios! ¡Me ayudaras a conservar este sitio! ¡Gracias!