none
Incluir fecha de hoy en consulta SQL RRS feed

  • Pregunta

  • El objetivo es para pedir su ayuda con una consulta SQL que estoy construyendo.

    Supongamos que tenemos el siguiente Script:

    SELECT CONVERT(date, E.Date_1) AS StartDate, 
    IIF(
    CONVERT(date, DATEADD(DAY, -1, LEAD(E.Date_1, 1, GETDATE()) OVER(ORDER BY E.Date_1))) < CONVERT(date, E.Date_1), 
    CONVERT(date, E.Date_1),
    CONVERT(date, DATEADD(DAY, -1, LEAD(E.Date_1, 1, GETDATE()) OVER(ORDER BY E.Date_1))))
          AS EndDate
    	   E.sell_rate_id, E.Buy_Rate_Id
    FROM CURRENCY E

    La funcion del script es que existen empresas donde se trabajan con tasas de cambios (moneda local y USD), y en algunas ocasiones se realizan transacciones en el sistema con fechas donde por la razon "a" o la razon "b" no se han agregado tasas de cambio para esa fecha en especifico, un ejemplo puede ser un dia festivo, un fin de semana, etc.

    Entonces lo que se busca es crear una rango de fechas StartDate y EndDate y despues este rango de fechas nos permiten con ayuda de un "between" encontrar la tasa de cambio (aunque no sea la del dia) y conertimos la transaccion en dolares.

    El tema es que si se reunen las dos condiciones siguientes:
    1- El dia de ahora no tengo ingresada una tasa de cambio.
    2- El dia de ahora tomado con el getdate() al restarle -1 no me aparece en el EndDate.

    Por lo tanto los movimientos gnerados en este dia, no los veria hasta que una de las dos observaciones se cambie, normalmente lo que haga es ejecutar el escript hasta el dia siguiente pero si necesito ver el dato exacto a este momento, no podria.

    Como podran ver en el ejemplo a esta fecha 17/04/20 no podria ver las transacciones que estan ocurriendo en este momento.

    Pido de su ayuda para encontrar una forma de incorporar en el EndDate el dia de ahora tambien.

    Muchas gracias anticipadas.

    viernes, 17 de abril de 2020 18:52

Todas las respuestas

  • Hola head777

     

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, vamos a darte seguimiento e investigaremos para buscar la mejor respuesta para ti.

     

    Gracias por usar los foros de MSDN.

     

    Luis Diego Mora

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    viernes, 17 de abril de 2020 19:22
    Moderador
  • Hola head777:

    Es muy pero que muy difícil, intentar ayudarte, cuando no pegas la estructura de los datos, ni datos, la consulta esta un poco a medias, y no tiene nada que ver con la imagen que muestras.

    Piensa que quien lea tú pregunta, no está metido en tu infraestructura y por tanto no sabe de que hablas.

    Pido de su ayuda para encontrar una forma de incorporar en el EndDate el dia de ahora tambien.

    A priori, no parece que EndDate pueda devolverte null, no obstante y de un modo simple, puedes envolverla en un case y comparar.

    SELECT CONVERT(date, E.Date_1) AS StartDate, 
    --- NO TOCO TÚ CÓDIGO Y LO ENCAPSULO EN UN CASE
    CASE WHEN (
    
    IIF(
    CONVERT(date, DATEADD(DAY, -1, LEAD(E.Date_1, 1, GETDATE()) OVER(ORDER BY E.Date_1))) < CONVERT(date, E.Date_1), 
    CONVERT(date, E.Date_1),
    CONVERT(date, DATEADD(DAY, -1, LEAD(E.Date_1, 1, GETDATE()) OVER(ORDER BY E.Date_1))))
    
    ) IS NULL THEN GETDATE()
    ELSE
    IIF(
    CONVERT(date, DATEADD(DAY, -1, LEAD(E.Date_1, 1, GETDATE()) OVER(ORDER BY E.Date_1))) < CONVERT(date, E.Date_1), 
    CONVERT(date, E.Date_1),
    CONVERT(date, DATEADD(DAY, -1, LEAD(E.Date_1, 1, GETDATE()) OVER(ORDER BY E.Date_1))))
    END
          AS EndDate,
    --
    	   E.sell_rate_id, E.Buy_Rate_Id
    FROM CURRENCY E

    domingo, 19 de abril de 2020 4:51
  • Hola head777

     

    ¿Alguna actualización sobre la consulta realizada? ¿Alguna de las respuestas proporcionadas te ayudó?

     

    Espero tu respuesta.

     

    Gracias por usar los foros de MSDN.

     

     

    Luis Diego Mora

     

    --------------------------------------------------------------------------

    viernes, 24 de abril de 2020 17:59
    Moderador