none
Calcular Año a partir de un periodo RRS feed

  • Pregunta

  • Hola, tengo los siguientes datos en una tabla, periodo (datetime) e importe (Money),

    Los periodos estan compuestos por los años desde el 2010-01-01 a la fecha actual 2015-05-15.

    Necesito mediante un select reprocesar 1 año para atras teniendo en cuenta que siempre se reprocesa el mes anterior al que estoy, o sea en este periodo estoy en Mayo, pero debo procesar desde abril del 2015 hasta abril del 2014, el mes que viene cuando este en Junio voy a reprocesar desde Mayo del 2015 a Mao del 2014 y asi sucesivamente a medida que avancen los meses.

    Muchas Gracias por la Ayuda.

    viernes, 15 de mayo de 2015 17:30

Respuestas

  • Hola:

    Esta es una manera de sacar esas fechas que necesitas, lo que no me quedó claro es que si la fecha origen para determinar las fechas de procesamiento es la fecha actual:

    DECLARE @hoy DATETIME = GETDATE()
    
    SELECT 
    DATEADD(MONTH, DATEDIFF(MONTH, 0, DATEADD( MONTH , -13 , GETDATE() ) ), 0) AS fechaDesde
    , DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE() ), 0) AS fechaHasta

    Y para aplicarlo en tu consulta debería ser así:

    SELECT tusColumnas
    FROM tuTabla
    WHERE tuColumnaFechaDesde >= DATEADD(MONTH, DATEDIFF(MONTH, 0, DATEADD( MONTH , -13 , GETDATE() ) ), 0)
    AND tuColumnaFechaHasta < DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE() ), 0)

    Ten cuidado al filtrar por rango de fechas con BETWEEN, en muchas ocasiones por desconocimiento no tenemos los resultados esperados, por eso te recomiendo con >= y <.

    SALUDOS!


    SERGIO SANCHEZ ARIAS
    facebook twitter blogger google

    • Marcado como respuesta LastStand79 viernes, 15 de mayo de 2015 18:18
    viernes, 15 de mayo de 2015 17:55

Todas las respuestas

  • Hola:

    Esta es una manera de sacar esas fechas que necesitas, lo que no me quedó claro es que si la fecha origen para determinar las fechas de procesamiento es la fecha actual:

    DECLARE @hoy DATETIME = GETDATE()
    
    SELECT 
    DATEADD(MONTH, DATEDIFF(MONTH, 0, DATEADD( MONTH , -13 , GETDATE() ) ), 0) AS fechaDesde
    , DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE() ), 0) AS fechaHasta

    Y para aplicarlo en tu consulta debería ser así:

    SELECT tusColumnas
    FROM tuTabla
    WHERE tuColumnaFechaDesde >= DATEADD(MONTH, DATEDIFF(MONTH, 0, DATEADD( MONTH , -13 , GETDATE() ) ), 0)
    AND tuColumnaFechaHasta < DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE() ), 0)

    Ten cuidado al filtrar por rango de fechas con BETWEEN, en muchas ocasiones por desconocimiento no tenemos los resultados esperados, por eso te recomiendo con >= y <.

    SALUDOS!


    SERGIO SANCHEZ ARIAS
    facebook twitter blogger google

    • Marcado como respuesta LastStand79 viernes, 15 de mayo de 2015 18:18
    viernes, 15 de mayo de 2015 17:55
  • Muchísimas Gracias a salido perfecto.
    viernes, 15 de mayo de 2015 18:18