Social Icons

twitter facebook google plus linkedin

miércoles, 11 de julio de 2012

Algo sobre la funcion YEAR en T-SQL

En T-SQL existen funciones, aparte de los tipos de datos específicos, que permiten manejar y obtener más información sobre determinada fecha.
En este cortísimo post, contaré sobre la función Year.
Tal como su nombre lo indica, esta función permite obtener el año desde una fecha completa.
El modo de funcionamiento es:
YEAR(fecha)
Donde Fecha puede ser un valor con los siguientes tipos de datos: time, date, smalldatetime, datetime, datetime2 o datetimeoffset y el valor devuelto será un int.
Por ejemplo:
De la tabla AdventureWorks seleccionamos los 100 primeros años de despacho de las órdenes de compra
SELECT TOP 100 YEAR(ShipDate) AS [Año de Despacho] FROM Sales.SalesOrderHeader
En esta consulta ShipDate es una columna cuyo tipo de dato es datetime.
Obviamente, a esto se le puede agregar un mayor nivel de complejidad y hacer cosas bastante interesantes en temas de análisis de datos a través del tiempo.

jueves, 5 de julio de 2012

Conocer la versión exacta de SQL Server

Hay algunas aplicaciones que necesitan tener una versión en específica de SQL Server. Voy a que no solo exige una edición, también pide una versión, un service pack o un cumulative update.

Esta información se puede obtener haciendo una simple consulta a la base de datos:
SELECT @@VERSION

Y debiera arrojar algo así:
Microsoft SQL Server 2012 - 11.0.2100.60 (X64)
Feb 10 2012 19:39:15
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.2 (Build 8400: )

El numero 11.0.2100.60 corresponde a la versión de SQL Server. Para saber la versión exacta de fácil lectura, hay que buscar el valor en la tabla del siguiente sitio web: http://www.sqlteam.com/article/sql-server-versions

Saludos!

miércoles, 4 de julio de 2012

Simplificando la vida con IN y T-SQL en SQL Server

¿Te complicas mucho la existencia usando operadores lógicos en las consultas a la base de datos? Lo mas probable, es que si lo hagas (Bueno, sino te complica, esto igual te servirá).

El operador OR siempre devolverá un valor verdadero, siempre y cuando uno de sus argumentos sea verdadero.  Se utiliza como predicado del WHERE.  Por ejemplo:

SELECT * FROM MiTabla WHERE Campo1 = 1 OR Campo1 = 2

Simple, ¿no? Ahora que pasaría si tuviera que agregar más OR a mi consulta:

SELECT * FROM MiTabla WHERE Campo1 = 1 OR Campo1 = 2 OR Campo1 = 3 OR Campo1 = 5 OR Campo1 = 10 OR Campo1 = 15 OR Campo1 = 100

Se complica un poco el panorama y queda complicado para la lectura. Para solucionar esta problemática, haremos uso de IN, que, justamente, sirve para simplificar el uso de OR.  El modo de uso es sencillo:

bla bla blaa WHERE Campo1 IN(valor1, valor2, valor3, valorn)

Este ejemplo fue realizado con la base de datos AdventureWorks:

-- Consulta usando OR
SELECT
*
FROM
[Sales].[SalesPerson]
WHERE
[Bonus] = 4100 OR [Bonus] = 2000 OR [Bonus] = 5000 OR [Bonus] = 6700 OR [Bonus] = 3550
ORDER BY
[Bonus] DESC

-- Consulta usando IN
SELECT
*
FROM
[Sales].[SalesPerson]
WHERE
[Bonus] IN(4100,2000,5000,6700,3550)
ORDER BY
[Bonus] DESC


Saludos!