none
COMPARAR FECHA DEL DIA CON OTRA FECHA USANDO IF Y ELSE RRS feed

  • Pregunta

  • Necesito una consulta que compare si la fecha del dia es mayor que la fecha de inicio, mi consulta es la siguiente

    @Num_Contrato as varchar(10),
    @Fecha_Inicio as date,
    @Fecha_Terminacion as date
    as
    DECLARE @Fecha_Pagos DATE 
       SET @Fecha_Pagos= DATEADD(d, 29 - DatePart(dw, @Fecha_Inicio), @Fecha_Inicio)
       
       WHILE(@Fecha_Pagos <=@Fecha_Terminacion) 
       BEGIN
      INSERT INTO Finanzas_Detalles_Plan_de_Pagos_Tabla (Num_Contrato,Fecha_Pagos) VALUES (@Num_Contrato,@Fecha_Pagos)
      SET @Fecha_Pagos = DATEADD(d, 29, @Fecha_Pagos)
       END

    lo que quiero es algo como if GETDATE() > @Fecha_Inicio then

    en ves de datepart(dw, @Fecha_Inicio), @Fecha_Inicio sea

    datepart(dw, GETDATE()), GETDATE()

    ELSE

    LA CONSULTA ORIGINAL QUE ES LA QUE ESTA ARRIBA, GRACIAS

    miércoles, 26 de agosto de 2020 23:07

Respuestas

  • Hola Efrain Diaz:

    	if (Cast(Getdate() as date)>@Fecha_inicio)
    		Set @Fecha_Pagos = DATEADD(d, 29 - DatePart(dw, Getdate()), Getdate());
    	else
    		SET @Fecha_Pagos = DATEADD(d, 29 - DatePart(dw, @Fecha_Inicio), @Fecha_Inicio);
       

    Pero realmente la sentencia yo la veo mucho mejor así:

    declare @Num_Contrato as varchar(10),
    		@Fecha_Inicio as date,
    		@Fecha_Terminacion as date,
    		@Fecha_Pagos as Date;
    	
        INSERT INTO Finanzas_Detalles_Plan_de_Pagos_Tabla (Num_Contrato,Fecha_Pagos)
    	SELECT @Num_Contrato
    		, CASE WHEN (Cast(Getdate() as date))>@Fecha_inicio 
    				THEN  DATEADD(d, 29 - DatePart(dw, Getdate()), Getdate())
    				ELSE  DATEADD(d, 29 - DatePart(dw, @Fecha_Inicio), @Fecha_Inicio)
    			END
    		WHERE @Fecha_Pagos <=@Fecha_Terminacion;
    Haces el insert, si se cumple la condición descrita en el where, y evalúas Fecha_Pagos en una expresión case.

    • Marcado como respuesta Efrain Diaz jueves, 27 de agosto de 2020 13:04
    jueves, 27 de agosto de 2020 3:25