Lista de dias del mes con SQL Server

Autor: Rafal Skotak
http://www.sqlservercentral.com/scripts/61949/

Select dt_val from (
–Matriz cruzada de valores numericos
select
dateadd(dd, value, dateadd(month, 8 – 1, dateadd(year, 2008 – 1900, ‘1900.01.01 00:00:00.000’))) as dt_val
from(
select (v2 * 4 + v1) * 4 + v0 as value from
(select 0 as v0 union select 1 union select 2 union select 3) as rs0 cross join
(select 0 as v1 union select 1 union select 2 union select 3) as rs1 cross join
(select 0 as v2 union select 1 union select 2 union select 3) as rs2
) as rs
–fin de matriz
) as rs2

where month(dt_val) = 8
order by dt_val

Encontré este script el día de ayer, buscando alternativas para un problema que necesito solucionar en mi trabajo.
Aunque no es la solución que actualmente necesito, es bastante bueno para la agilidad mental de la solución de problemas de datos en SQL

En si lo que estamos viendo es una tabla derivada, la cual convierte valores numéricos en fechas, es decir, la tabla mas interna es en si una matriz cruzada de valores, la cual servirá para proveer valores a la tabla derivada, para que esta a su vez utilice dichos valores en las funciones de conversión de fechas

El script se puede correr en dos partes para obtener un entendimiento mas amplio.

-Nota importante: Este script debe ser considerado EVIL SQL, ya que hace uso de una tecnica Cross Join, lo cual puede comprometer el desempeño de un proceso.

Iaax Page

Una respuesta a “Lista de dias del mes con SQL Server”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *