none
Verificar horário ?? RRS feed

  • Pergunta

  • Olá pessoa, boa tarde.

    Possuo uma função que está funcionando perfeitamente, segue um trecho da minha função:

    while

     

    @dataInicial <= @dataFinal

    begin

     

    select @dias = @dias +

     

    case datepart(dw, @dataInicial)

     

    when 1 then 0

     

    when 7 then 0

     

    else 1

    end

     

    ,


    Agora o que estou precisando é o seguinte caso o horário inicial for > 9:59:59 seja considerado menos um na diferença entre data inicial e data final.

    exemplo :
    Se a data inicial for 01/01/2010 10:01:00 e data final : 02/10/2010 15:00:00 a minha função deverá retorna como diferença 1 dia e não dois dias.

    Preciso muito da ajuda de vcs.


    Obrigado e forte abs

    Adriano_SP 

    terça-feira, 2 de fevereiro de 2010 16:46

Todas as Respostas

  • Adriano,

    Acredito que neste caso o Case não seria a solução, você teria que fazer uso do IF mas fora do Select, trabalhando com a diferença entre as datas e o período de horas.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quarta-feira, 3 de fevereiro de 2010 10:29
  • Olá Junior Galvão, bom dia.

    Na verdade eu preciso continuar com a verificação da forma que está é que agora preciso inserir mais essa verificação de saber se é maior que 9:59:59, eu pensei em inserir essa insrução

    select

     

    @horario = datepart(hh,@datainicial

    e depois inserir um IF @horario > 9
    select @dias =  @dias -

    mas onde posso inserir ou testar esse comando esá certo isso que estou tentando fazer ???

    Preciso muito da sua ajuda, valeu.

    Adriano_SP

    quarta-feira, 3 de fevereiro de 2010 13:47
  • Adriano, bom dia veja se é isso q deseja:

    declare @datainicial datetime 
    set @datainicial = getdate()
    
    select @datainicial as DataIni, case when datepart(hh,@datainicial) > 9 then @datainicial -1 else @datainicial end

    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    quinta-feira, 4 de fevereiro de 2010 13:22
  • Olá Leornado,

    Eu não consegui fazer esse comando funcionar dentro da minha função

    Por favor me ajudem.

    Tentei de várias formas e sempre da erro, a minha função perfeitamente no entanto a única coisa que preciso fazer é desconsiderar 1 dia caso o horário inicial seja > que as 9 da manhã.

    Obrigado e agradeço por qualquer ajuda.

    Um Abraço,

    ADRAINO_SP
    quinta-feira, 4 de fevereiro de 2010 22:55
  • Adriano,

    Acredito que o IF seria a solução mais prática, mas você não poderá utilizar dentro do Select!!!!
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    sexta-feira, 5 de fevereiro de 2010 10:48
  • Olá Junior,

    BEGIN

    IF

     

    (datepart(hh,@dataInicial)>9)

     

    begin

     

    set @aux = -1

     

    end

    ELSE

     

    begin

     

    set @aux = 0

     

    end

    END

    while

     

    @dataInicial <= @dataFinal

    begin

    select

     

    @dias = @dias + @aux +

    case

     

    datepart(dw, @dataInicial)

    when

     

    1 then 0

    when

     

    7 then 0

    else

     

    1

    end

     

    ,

    @dataInicial

    = @dataInicial + 1

    end

     

    -- do while

    return

     

    @dias

    end

     




    Tentei com alteração acima e quase funcionouno entanto sempre que passo como data inicial assim '2010-01-01 08:00:00.000' o sistema sempre conhece e subtrai 1 na verdade eu quero que subtrai apenas quando o horário for > 9.


    Percebo que falta pouco, vou continuar tentando caso tenha alguma susgestão por favor me avisem pessoal.

    Muito Obrigado.

    sexta-feira, 5 de fevereiro de 2010 11:17
  • PESSOAL CONSEGUI RESOLVER ASSIM:

     

    BEGIN

    IF

     

     

     

     

     set 

    begin @aux = -1
    end

    else
      begin
         @aux = 0
      end


    e depois neste ponto eu fiz assim:


    @dias = @dias + @aux + Select ......


    Assim deu certo, obrigado pela ajuda.

    Um forte abraço.

    Adriano_SP



    (datepart(hh,@dataInicial)>9)
    • Sugerido como Resposta Rafael Veronezi quarta-feira, 10 de fevereiro de 2010 13:49
    sexta-feira, 5 de fevereiro de 2010 12:03