Entradas

Mostrando entradas de julio, 2012

Introducción a las fechas en SQL Server

En este post quiero tratar de explicar cómo usar las fechas en SQL Server y que cosas debemos tomar en consideración pero antes voy a tratar de explicar que son para SQL Server, el cual, tiene básicamente dos tipos de datos donde se pueden almacenar las mismas: Datetime y SmallDateTime, en este cuadro veremos las diferencias entre estos dos tipos de datos. DateTime Valores de Fecha y Hora que están comprendidos entre 1/1/1763 y 31/12/9999. La hora se expresa con una exactitud de hasta 1/300 de segundo SamallDateTime Valores de Fecha y Hora que están comprendidos entre 1/1/1900 y 6/6/2079. El grado de precisión de la hora llega hasta el minuto ¿Cómo guarda internamente SQL Server las fechas ? El motor de SQL Server siempre guarda las fechas de una sola forma y no esta referida a ningún formato concreto como podría ser Americano, Español, Japonés, etc.; SQL Server guarda las fechas DateTime como enteros de 4 bytes (los primeros 4 bytes almacenan la fecha y los otros 4 la

mssql_connect(): Unable to connect to server

Existen dos posibles soluciones para este error de la librería de PHP mssql (obsoleta ya desde la versión 5.3 de PHP por la aparición del driver de Microsoft para SQL Server sqlsrv). El error unable to connect to server puede deberse a una de estas dos razones: La librería ntwdblib.dll perteneciente a las MS SQL Client Tools está desfasada, por tanto tenemos que localizarla en nuestro ordenador y descargar una versión más reciente. En la configuración del php.ini tenemos la directiva mssql.compatability_mode a 0 y deberíamos tenerla a 1. Con estas sencillas comprobaciones nos evitaremos muchos quebraderos de cabeza al intentar conectar nuestro servidor web con PHP y un servidor de base de datos SQL Server con esta librería.

Procedimientos vs T-SQL en SQL Server

Imagen
¿Por qué recomendar el uso de los procedimientos almacenados en lugar de las sentencias T-SQL ? Los procedimientos almacenados deben de ser una de las herramientas reinas de los motores de bases de datos (cómo es el caso de SQL Server) y de los DBA ¿Por qué? Mayor optimización para el motor : Este mismo no debe compilar (a menos que se lo indiquemos) cada instrucción T-SQL, sino que ya la tiene compilada y esto genera mucho mayor rendimiento. También se da el caso que el procedimiento reside en nuestro servidor por lo cual el trafico de red es muy inferior al que podemos hacer si mandamos las T-SQL desde nuestro cliente. Seguridad : Los procedimientos no solo son buenos por rendimiento, sino que nos permiten hacer las operaciones no directamente sobre nuestras tablas. Reutilización de código : El uso de procedimientos es muy útil para esto, si la consulta de rangos de fechas para buscar los pedidos en firme de un cliente por ejemplo, la necesitamos en mas de una aplicación, e

Principio de sustitución de Liskov (LSP)

Imagen
Hoy vamos un poco a la teoría, he escrito varios post sobre la herencia y la programación orientado a objetos, temas que van muy de la mano y cuyo fundamento se basa en el principio que da título a este post. Este principio fue escrito por Bárbara Liskov en su trabajo sobre abstracción de tipos de datos y está relacionado con un principio que se podría decir que nació junto con la programación orientada a objetos, el diseño por contratos . ¿Cansado de datos históricos? Vamos al grano. El principio dice que cualquier función que utilice una referencia a una clase base debe ser capaz de usar cualquier clase derivada sin saberlo. Es decir que el cliente usa una referencia a la clase base, sin saber si se usa la clase derivada A o la B. No basta con "ser" hay que "comportarse como tal". Para lograr esto, hay que usar abstracción de datos y polimorfismo, que son las bases del principio de abierto cerrado . El Principio de sustitución de Liskov se usa para medir el

Habilitar la copia automática de textos al portapapeles

Imagen
En anteriores ocasiones he escrito como copiar desde el portapapeles con JS y copiar al portapapeles con JavaScript , pero para aplicar ambas opciones en muchos navegadores no está disponible y en otros hay que hacer configuraciones adicionales. Este tutorial es aplicable a los navegadores Firefox cualquier versión, para Internet Explorer no es necesario habilitar nada en concreto y para el resto de navegadores está pendiente de analizar. Abrimos el navegador y en la barra de navegación (dónde se ponen las direcciones de las páginas web –recuadro rojo imagen 2- ) escribir “about:config”, nos aparecerá la siguiente advertencia: No os preocupéis ignorar este mensaje y pulsad el botón “Tendré cuidado, lo prometo”, el check “Mostrar esta advertencia la próxima vez” marcado también. Una vez pulsado el botón nos aparecen un listado con todas las opciones de configuración de nuestro navegador, es una pantalla como esta: Dónde pone Filtro escribimos “signed.applets.codebase_principal_suppo