Tuesday, September 19, 2017
SQL

Generar rango de fechas en SQL sin While

>helibertoarias helibertoarias
julio 08, 2014

Tally table o tabla de cuentas es una tabla que caracteriza por constar de una sola columna de tipo numérico con valores consecutivos los cuales permanecen inalterables. ¿Para que sirve?, muchas cosas, por ejemplo generar rango de fechas en SQL sin While, operaciones con rangos fecha, encontrar posiciones de caracteres en cadenas de textos o convertir a filas secuencias de texto delimitadas por un separador.

Para ver usos, crearemos la tabla y cargaremos los registros para manejar operaciones de generación de días con rangos de fechas de hasta aproximadamente 10 años.  Luego generaremos una consulta en la que veremos como sacar provecho de esta sencilla tabla.

Luego de ejecutar este script tendremos los datos de nuestra tabla. Ahora agregaremos una tabla en la que almacenaremos la información correspondiente a los periodos que una persona esta hospedada en un hotel. Esta nueva tabla ha sido simplificada para el ejemplo y por tal no tiene normalización.

Finalmente para probar como generar los días contenidos en un rango de fechas con la tabla de cuentas o tally table.

 

Rango de días con tally table

Rango de días con tally table

De esta manera evitamos crear una tabla con un rango de fechas y demás, con esta sencilla tabla podemos realizar las operaciones de generación días en rango de fechas.

(Visitado 914 veces, 7 visitas hoy)
Heliberto Arias
Mi nombre es Heliberto Arias y vivo en Barranquilla, Colombia. Soy desarrollador de software. He estado en el desarrollo de software desde el 2007. Cree este blog en 2013 para compartir lo que voy aprendiendo cada año, en el escribo de tecnologías Microsoft principalmente en C# (y aunque he usado VB declaro que lo detesto) y SQL Server desarrollado aplicaciones y servicios web entre otros.Me gustaría mucho si te suscribes a mis redes en Youtube, Google+, Twitter, e Instagram.

Comments

  • BELTRAN BRITO
    BELTRAN BRITO

    excelente aporte, tuve que hacer algunos cambios para adaptarlo a mysql,
    me costó un poco entender la logica, nunca habia trabajado con procesos en mysql y era lo que me tenia enrredado,
    tuve que documentarme con respecto a los procesos, para al final darme cuenta que no es lo medular aqui. lo realmente importante es el INNER JOIN,

    te repito gracias por esta logica, nunca se me hubiese ocurrido!!

    Jun 23, 2017, 4:17 pm
    Responder

Leave a Comment

Your email address will not be published.

veinte + 19 =

Login
Remember me
Lost your Password?
Password Reset
Login