none
Recorrido de fechas a la actualidad RRS feed

  • Pregunta

  • Hola grupo deseo hacer un recorrido de fechas hasta la fecha actual, cuando el @Month es menor al mes si me recorre

    declare @Month int=2,
    @Year char(4) = 2020
    Declare @n int = @Month
    WHILE @n <= MONTH(GETDATE())
    BEGIN
    select @n 
    SET @n += 1
    END 

    Pero cuando ingreso estos valores en
    declare @Month int=11,
    @Year char(4) = 2019
    No realiza el recorrido de los meses hasta la actualidad, si pueden ayudarme con esta logica por favor


    Si se puede imaginar... se puede programar. Me encanta depender de la tecnología para vengarme de ella y dominarla como los locos.

    sábado, 10 de abril de 2021 17:08

Respuestas

  • El fallo de la lógica que tienes es que cuando el mes llega a 12 le sumas 1 y pasa a ser 13, y así sucesivamente. Si quisieras recorrer mes y año, cuando se dé esta circunstancia tienes que cambiar el mes 13 por el mes 1 y sumarle 1 al año.

    Pero hay una forma más fácil de hacerlo. Simplemente usa la aritmética entre fechas (DATEADD) para pasar de un mes a otro usando un DATETIME. Después, si quieres, puedes usar las funciones MONTH y YEAR para separar el mes y año desde la fecha.

    declare @Fecha DATETIME = '20201101'
    WHILE @Fecha <= GETDATE()
    BEGIN
      select @Fecha -- O, si lo prefieres, MONTH(@Fecha) 
      SET @Fecha = DATEADD(mm, 1, @Fecha)
    END 

    • Marcado como respuesta SysEdw sábado, 10 de abril de 2021 18:30
    sábado, 10 de abril de 2021 18:17