3ENGINE

Programación y otros cachivaches

Etiqueta: SQL

Página 3/4

Tecnologia

Convertir un datetime a cadena formateada en SQL Server


Si necesitas mostrar en un select una cadena de tipo datetime y quieres cambiar su formato, puedes hacer servir la función CONVERT para SQL Server.

CONVERT(data_type(length),data_to_be_converted,style)

Parámetros style aceptados:

ID Estilo Formato Estilo
100 o 0 mon dd yyyy hh:miAM (o PM)
101 mm/dd/yy
102 yy.mm.dd
103 dd/mm/yy
104 dd.mm.yy
105 dd-mm-yy
106 dd mon yy
107 Mon dd, yy
108 hh:mm:ss
109 o 9 mon dd yyyy hh:mi:ss:mmmAM (o PM)
110 mm-dd-yy
111 yy/mm/dd
112 yymmdd
113 o 13 dd mon yyyy hh:mm:ss:mmm(24h)
114 hh:mi:ss:mmm(24h)
120 o 20 yyyy-mm-dd hh:mi:ss(24h)
121 o 21 yyyy-mm-dd hh:mi:ss.mmm(24h)
126 yyyy-mm-ddThh:mm:ss.mmm(sin espacios)
130 dd mon yyyy hh:mi:ss:mmmAM
131 dd/mm/yy hh:mi:ss:mmmAM

Ejemplo:

SELECT CONVERT(VARCHAR(24),GETDATE(),113) 

Referencias:
What are the valid styles for converting datetime to string?
SQL Server CONVERT() Function
How to convert from string to datetime?




Tecnologia

Activar y desactivar todas las restricciones de tabla en Oracle para eliminar datos


Si necesitas eliminar todos los datos de una base de datos, y no tienes ganas de pensar en el orden de los «delete from tablaXYS» para cumplir con las restricciones de integridad. Lo mas rápido es desactivar las foreign keys, eliminar todas las tablas y dejar otra vez las foreign keys como estaban.

Activar y desactivar todas las restricciones de tabla en Oracle

Deshabilitar todas las foreign keys de todas las tablas:

BEGIN  
  FOR c IN
  (SELECT c.owner, c.table_name, c.constraint_name    
   FROM user_constraints c, user_tables t    
   WHERE c.table_name = t.table_name    
   AND c.status = 'ENABLED'
   AND c.CONSTRAINT_TYPE = 'R'     
   ORDER BY c.constraint_type DESC)   
LOOP     
  dbms_utility.exec_ddl_statement('alter table ' || c.owner || 
  '.' || c.table_name || 'disable constraint ' || c.constraint_name);   
END LOOP; 
END;

Volver a habilitar todas las foreign keys de todas las tablas:

BEGIN  
  FOR c IN
  (SELECT c.owner, c.table_name, c.constraint_name
   FROM user_constraints c, user_tables t
   WHERE c.table_name = t.table_name
   AND c.status = 'DISABLED'
   AND c.CONSTRAINT_TYPE = 'R'    
   ORDER BY c.constraint_type)
LOOP
  dbms_utility.exec_ddl_statement('alter table ' || c.owner || 
   '.' || c.table_name || ' enable constraint ' || c.constraint_name);   
END LOOP; 
END;

Recursos
Disable all table constraints in Oracle




Tecnologia

line-feed o carriage-return en Oracle


En Oracle, para añadir a un texto un line-feed o un carriage-return:

  SELECT '"' || chr(10) || '"' FROM DUAL;
  SELECT '"' || chr(13) || '"' FROM DUAL;

De modo que para buscar, por ejemplo, un texto que contenga un line-feed:

  SELECT * FROM MITABLA WHERE MICAMPO LIKE '%'||chr(10)||'%';



Tecnologia

Obtener lista y uso de índices de una tabla ORACLE


Para averiguar la lista de indices asociados a una tabla:

select *
from all_indexes
where table_name = 'NOMBRE_TABLA'

Para averiguar si se hace uso de un índice en una consulta, activar el monitoreo:

ALTER INDEX NOMBRE_INDICE MONITORING USAGE;

Despues de realizar la consulta, para averiguar si se ha utilizado:

select *
from v$object_usage
where table_name = 'NOMBRE_TABLA'

Para desactivar el monitoreo:

ALTER INDEX NOMBRE_INDICE NOMONITORING USAGE;

Mas información en este enlace