Lección 9 Fechas SQL, Valores NULL, Funciones de Valores NULL, Tipos de Datos Generales y...

7
1. Funciones de Fechas SQL 1.1. Fechas SQL Nota: La parte más difícil de trabajar con fechas es asegurarse de que el formato de la fecha que estamos intentando insertar coincida con el formato de fecha de la columna en la base de datos. Siempre y cuando tus datos contengan sólo la porción de la fecha, tus consultas funcionarán perfectamente. Sin embargo, si una porción se compromete, se pone complicado. Pero antes de hablar acerca de las complicaciones de las consultas de fechas, veremos las funciones más importantes para trabajar con fechas. 1.2. Funciones de Fecha con MySQL La siguiente tabla lista las funciones más importantes que podemos utilizar en MySQL: FUNCIÓN DESCRIPCIÓN NOW() Retorna la fecha y hora actual. CURDATE() Retorna la fecha actual. CURTIME() Retorna la hora actual. DATE() Extrae la parte de una fecha o de una expresión de hora. EXTRACT() Retorna sólo una parte de una fecha / hora. DATE_ADD() Añade un intervalo de tiempo a una fecha. DATE_SUB() Resta un intervalo de fecha a una fecha. DATEDIFF() Retorna el número de días entre dos fechas. DATE_FORMAT() Muestra la fecha / hora en diferentes formatos. 1.3. Funciones de Fecha con SQL Server La siguiente tabla lista las funciones más importantes que podemos utilizar en SQL Server:

description

SQL

Transcript of Lección 9 Fechas SQL, Valores NULL, Funciones de Valores NULL, Tipos de Datos Generales y...

Page 1: Lección 9 Fechas SQL, Valores NULL, Funciones de Valores NULL, Tipos de Datos Generales y Específicos

1. Funciones de Fechas SQL

1.1. Fechas SQL

Nota: La parte más difícil de trabajar con fechas es asegurarse de que el formato de la fecha que estamos intentando insertar coincida con el formato de fecha de la columna en la base de datos.

Siempre y cuando tus datos contengan sólo la porción de la fecha, tus consultas funcionarán perfectamente. Sin embargo, si una porción se compromete, se pone complicado.

Pero antes de hablar acerca de las complicaciones de las consultas de fechas, veremos las funciones más importantes para trabajar con fechas.

1.2. Funciones de Fecha con MySQL

La siguiente tabla lista las funciones más importantes que podemos utilizar en MySQL:

FUNCIÓN DESCRIPCIÓNNOW() Retorna la fecha y hora actual.CURDATE() Retorna la fecha actual.CURTIME() Retorna la hora actual.DATE() Extrae la parte de una fecha o de una expresión de hora.EXTRACT() Retorna sólo una parte de una fecha / hora.DATE_ADD() Añade un intervalo de tiempo a una fecha.DATE_SUB() Resta un intervalo de fecha a una fecha.DATEDIFF() Retorna el número de días entre dos fechas.DATE_FORMAT() Muestra la fecha / hora en diferentes formatos.

1.3. Funciones de Fecha con SQL Server

La siguiente tabla lista las funciones más importantes que podemos utilizar en SQL Server:

FUNCIÓN DESCRIPCIÓNGETDATE() Retorna la fecha y hora actual.DATEPART() Retorna la parte de una fecha / hora.DATEADD() Añade o resta un intervalo de tiempo a una fecha.DATEDIFF() Retorna el tiempo que hay entre dos fechas.CONVERT() Muestra una fecha / hora en diferentes formatos.

1.4. Tipos de Datos de Fecha SQL

MySQL viene con los siguientes tipos de datos para almacenar fechas o fecha / hora en la base de datos:

Page 2: Lección 9 Fechas SQL, Valores NULL, Funciones de Valores NULL, Tipos de Datos Generales y Específicos

DATE – formato: AAAA-MM-DD DATETIME – formato: AAAA-MM-DD HH:MI:SS TIMESTAMP – formato: AAAA-MM-DD HH:MI:SS YEAR – formato: AAAA ó AA

SQL Server viene con los siguientes tipos de datos para almacenar fechas o fecha / hora en la base de datos:

DATE – formato: AAAA-MM-DD DATETIME – formato: AAAA-MM-DD HH:MI:SS SMALLDATETIME – formato: AAAA-MM-DD HH:MI:SS TIMESTAMP – formato: un número único

AA ó AAAA: año MM: mes DD: día HH: hora MI: minutos SS: segundos

Nota: Los tipos de datos que se van a almacenar se seleccionan al momento de crear una tabla en la base de datos.

1.5. Trabajando con Fechas SQL

Nota: Podemos comparar dos fechas fácilmente si no hay componentes de hora involucrados.

Asumamos que tenemos la siguiente tabla “Orders”:

Ahora queremos seleccionar los registros cuyo campo “OrderDate” sea “2008-11-11” de la tabla anterior. Para ello utilizamos la siguiente sentencia SQL:

SELECT * FROM Orders WHERE OrderDate = ‘2008-11-11’

Ahora, asumiendo que la tabla “Orders” se ve de la siguiente manera (notemos ahora que existe un componente de hora en la columna “OrderDate”):

Si utilizamos la misma sentencia SQL anterior, no dará resultado. Esto sucede ya que la consulta está buscando fechas sin la porción de la hora.

Nota: Si quieres mantener tus consultas lo más simples posible, no ingreses datos de hora a menos que sea estrictamente necesario.

2. Valores NULL SQL

Page 3: Lección 9 Fechas SQL, Valores NULL, Funciones de Valores NULL, Tipos de Datos Generales y Específicos

El valor NULL representa datos desconocidos o perdidos. Por defecto, una columna de una tabla puede contener valores NULL. En este capítulo veremos los operadores IS NULL y IS NOT NULL.

2.1. Valores NULL SQL

Si se le da la opción de opcional a una columna en una tabla, podemos insertar o actualizar un registro sin añadir un valor a esta columna. Esto significa que el campo será almacenado con un valor NULL.

Los valores NULL se tratan de manera distinta a los otros valores. NULL se utiliza como contenedor para valores desconocidos o no aplicables.

Nota: No es posible comparar un valor NULL y 0, ya que no son equivalentes.

2.2. Trabajando con valores NULL SQL

Demos una mirada a la siguiente tabla “Persons”:

Supongamos que la columna “Address” es opcional en la tabla “Persons”. Esto quiere decir que si insertamos un nuevo registro sin valor para la columna “Address”, la columna se guardará como un valor NULL.

¿Cómo podemos realizar las pruebas con valores NULL? No es posible utilizar operadores para las pruebas, como =, < ó <>. En cambio tenemos que utilizar operadores NULL y NOT NULL.

2.3. IS NULL SQL

¿Cómo podemos seleccionar sólo los registros que tengan valores NULL en la columna “Address”? Para ello utilizamos el operador IS NULL:

SELECT LastName, FirstName, Address, FROM PersonsWHERE Address IS NULL

El resultado se vería como esto:

2.4. IS NOT NULL SQL

¿Cómo seleccionamos los registros que no tengan valores NULL en la columna “Address”? Para ello utilizamos el operador IS NOT NULL:

SELECT LastName, FirstName, Address, FROM PersonsWHERE Address IS NOT NULL

El resultado se vería como esto:

En el siguiente capítulo veremos las funciones ISNULL(), NVL(), IFNULL() y COALESCE().

Page 4: Lección 9 Fechas SQL, Valores NULL, Funciones de Valores NULL, Tipos de Datos Generales y Específicos

3. Funciones para valores NULL SQL

3.1. Funciones SQL ISNULL(), NVL(), IFNULL() y COALESCE()

Demos una mirada a la siguiente tabla “Products”:

Suponemos que la columna “UnitsOnOrder” es opcional y puede contener valores NULL. Tenemos entonces la siguiente sentencia SELECT:

SELECT ProductName, UnitPrice*(UnitsInStock + UnitsOnOrder)FROM Products

En el ejemplo anterior, si alguno de los valores en “UnitsOnOrder” son NULL, el resultado será NULL.

La función de Microsoft ISNULL() se utiliza para especificar cuándo necesitamos tratar con valores NULL.

Las funciones NVL(), IFNULL() y COALESCE() también pueden utilizarse para conseguir el mismo resultado.

En este caso queremos que los valores NULL sean tratados como cero. A continuación, si el campo “UnitsOnOrder” es NULL no dañará el cálculo ya que la función ISNULL() retorna cero si el valor es NULL:

MS AccessSELECT ProductName, UnitPrice * (UnitsInStock + IIF(ISNULL(UnitsOnOrder), 0, UnitsOnOrder)) FROM Prodcuts

SQL ServerSELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))FROM Products

OracleOracle no tiene una función ISNULL(). Sin embargo, podemos utilizar la función NVL() para obtener el mismo resultado.SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))FROM Products

MySQLMySQL no tiene una función ISNULL(). Sin embargo, funciona un poco diferente de como lo hace la función ISNULL() de Microsoft. En MySQL podemos utilizar la función IFNULL(), de la siguiente manera:SELECT ProdcutName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))FROM Products

O podemos utilizar la función COALESCE(), de la siguiente manera:

Page 5: Lección 9 Fechas SQL, Valores NULL, Funciones de Valores NULL, Tipos de Datos Generales y Específicos

SELECT ProductName, UnitPrice * (UnitsInStock + COALSCE(UnitsOnOrder, 0))FROM Products

4. Tipos de Datos Generales en SQL

En una base de datos es obligatorio que cada columna tenga un nombre y un tipo de dato. Los desarrolladores SQL deben decidir qué tipo de dato será almacenado dentro de cada columna al crear una tabla SQL. Los tipos de datos son una especie de etiqueta o guía para que SQL entienda qué tipo de dato se espera recibir dentro de cada columna y, además, identifica cómo SQL va a interactuar con los datos almacenados.

La siguiente tabla lista los tipos de datos generales utilizados en SQL:

TIPO DE DATO DESCRIPCIÓNCHARACTER(n) Cadena de caracteres de largo ‘n’.VARCHAR(n)CHARACTERVARYING(n)

Cadena de caracteres. Largo variable. Largo máximo ‘n’.

BINARY(n) Cadena de binarios de largo ‘n’.BOOLEAN Almacena valores TRUE o FALSE (Verdadero o Falso).VARBINARY(n)BINARY VARYING(n)

Cadena de binarios. Largo variable. Largo máximo ‘n’.

INTEGER(p) Número entero (no decimal). Presición ‘p’.SMALLINT Número entero (no decimal). Presición 5.INTEGER Número entero (no decimal). Presición 10.BIGINT Número entero (no decimal). Presición 19.DECIMAL(p,s)NUMERIC(p,s)FLOAT(p)REALFLOATDOUBLE PRECISIONDATETIMETIMESTAMPINTERVALARRAYMULTISETXML

5.6.7.8.