Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

xandyloch

[Resolvido] Select Por Período

Recommended Posts

Bom dia, Pessoal

 

Estou fazendo um relatorio de Produção, onde temos 3 turnos, turno 1 começa das 06:00 ate 14:00, turno 2 14:00 ate 22:00,

turno 3 22:00 ate 06:00, pois bem,o turno 1 e 2 são tranquilos que são no mesmo dia, meu problema esta no select para fazer

o turno 3, que começa em um dia e termina em outro, as horas trabalhadas das 00:00 ate 06:00 são referente ao turno 3 do dia

anterior. Alguem tem uma idéia como posso fazer esse select ?

 

Obrigado.

Alexandre Loch

Compartilhar este post


Link para o post
Compartilhar em outros sites

Supondo somente a hora - 3º Turno

 

where ((hora between 2200 and 2359) or 
      (hora between 0000 and 0559)) 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não conheço as Funções que manipulam data no SqlServer mas seria algo do tipo :

 

where ((datahora between 24/10/2011 22:00:00 and 24/10/2011 23:59:59) or 
      (datahora between 25/10/2011 00:00:00 and 25/10/2011 05:59:59)) 

 

ou seja somar 1 dia ao dia do paramêtro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

Extraia a hora e teste apenas com ela.

 

ou

 

Faça uma FUNCTION que retorne o turno.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mellow.gif antes que me xinguem, este foi o meio mais rapido que eu fiz.. existe uma funcao no SQL2008 nativo para isso, mas esqueci qual eh e estou sem ambiente para teste:

 


declare @turno1_ini datetime
declare @turno1_fim datetime

declare @turno2_ini datetime
declare @turno2_fim datetime

declare @turno3_ini datetime
declare @turno3_fim datetime


set @turno1_ini = '2011-10-24 06:00'
set @turno1_fim = '2011-10-24 14:00'

set @turno2_ini = '2011-10-24 14:00'
set @turno2_fim = '2011-10-24 22:00'

set @turno3_ini = '2011-10-24 22:00'
set @turno3_fim = '2011-10-25 06:00'


select convert(varchar(20),(@turno3_fim - @turno3_ini),108)

 

Alguem que tenha o SQL poderia testar? Estou em um MAC e sem acesso as minhas maquinas...

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.