Inquiridor
Verificar horário ??

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
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 -
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 -
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 -
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 -
-
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. -
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