none
Ajuda com a GetDate RRS feed

  • Pergunta

  • Amigos,

     

    estou tentando pegar a diferença entre datas e não estou tendo sucesso. Poderiam me ajudar com esse erro?

     

    Server: Msg 242, Level 16, State 3, Line 14
    The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

     

    Declare @dt_novo_vencto char(08)
    Declare @dt_recebimento char(08)

    select @dt_novo_vencto = '20080101'
    select @dt_recebimento = '00000000'

    if @dt_recebimento='00000000'
     
     --select @dt_recebimento = getdate()
     Select DateDiff(Day,@dt_novo_vencto, convert(char(8), getdate()))

    if isdate(@dt_recebimento)=0

    Select DateDiff(Day,@dt_novo_vencto, @dt_recebimento)  -- vai retornar 1

    sexta-feira, 1 de fevereiro de 2008 17:24

Respostas

  • O erro está no isdate() = 0..

    vai entrar no IF só se a data for inválida.. ai não consegue converter pra data o '000000000'

     

    tente assim

    Declare @dt_novo_vencto char(08)

    Declare @dt_recebimento char(08)

    select @dt_novo_vencto = '20080101'

    select @dt_recebimento = '00000000'

    if @dt_recebimento='00000000'

    begin

    select @dt_recebimento = getdate()

    Select DateDiff(Day,convert(datetime,@dt_novo_vencto), getdate())

    end

    if isdate(@dt_recebimento)=1

    Select DateDiff(Day,@dt_novo_vencto, convert(datetime,@dt_recebimento)) -- vai retornar 1

    else

    Select 'data inválida'

     

     

    Veja se te ajuda

    []s

    sexta-feira, 1 de fevereiro de 2008 19:26

Todas as Respostas

  • Boa tarde

     

     

    Converta as variáveis que estão como char para datetime antes de utilizar o DateDiff

     

     

     

     

    Espero ter ajudado

     

    sexta-feira, 1 de fevereiro de 2008 17:31
  • O erro está no isdate() = 0..

    vai entrar no IF só se a data for inválida.. ai não consegue converter pra data o '000000000'

     

    tente assim

    Declare @dt_novo_vencto char(08)

    Declare @dt_recebimento char(08)

    select @dt_novo_vencto = '20080101'

    select @dt_recebimento = '00000000'

    if @dt_recebimento='00000000'

    begin

    select @dt_recebimento = getdate()

    Select DateDiff(Day,convert(datetime,@dt_novo_vencto), getdate())

    end

    if isdate(@dt_recebimento)=1

    Select DateDiff(Day,@dt_novo_vencto, convert(datetime,@dt_recebimento)) -- vai retornar 1

    else

    Select 'data inválida'

     

     

    Veja se te ajuda

    []s

    sexta-feira, 1 de fevereiro de 2008 19:26