none
DATEADD RRS feed

  • Pergunta

  • Turma,

    Estou precisando de ajuda !!!

    Tenho uma tabela que tem uma data incio e final de vigência de um contrato e uma constante que representa qual a periodicidade de correção do contrato.

    Preciso saber qual ou quais são as datas de vencimento dentro de um período sem  utilizar loop.

    Exemplo:

    data inicial = 01/01/2006

    data final = 31/12/2006

    constante = 1 (mes)

    Preciso que o select me devolva as datas

    01/01/2006

    01/02/2006

    01/03/2006

    01/04/2006

    até

    01/12/2006

    Isso é possível sem usar loop?

    Valeu !!!

    quinta-feira, 16 de novembro de 2006 13:00

Todas as Respostas

  • segue exemplo, sem loop nao rola mais vc. pode fazer uma funcao e ate usala em joins.

     

    Create Function Ufn_ReturnDays(@dateStart datetime, @DateEnd Datetime)
    Returns @SDate Table (SeqDate Datetime)
    As
    Begin
    -- Declare @SDate Table (Sqdate Datetime)
     While @dateStart <= @DateEnd
     Begin
       Insert into @SDate Values (@dateStart)
       Set @dateStart = Dateadd(day,1,@dateStart)
     End

     Return
    End

    Select * From dbo.Ufn_ReturnDays('2006-11-01', '2006-12-01')

     

    Abs;

    quinta-feira, 16 de novembro de 2006 13:16
  • Pablício,

    Veja este exemplo:

    Declare @ValorMes Int,

                @Data DateTime

    Set NoCount On

    Set DateFormat DMY

    Set @ValorMes=0

    Set @Data='01/01/2006'

    While @ValorMes <12

      Begin

       Print 'Data-->'+Convert(Char(11),DateAdd(Month,@ValorMes,@Data))

       Set @ValorMes=@ValorMes+1

      End

    quinta-feira, 16 de novembro de 2006 13:37