Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
Boa tarde, Motta
Tambem preciso trabalhar com a data.
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.
Veja as dicas de datas e horas:
http://forum.imasters.com.br/topic/224454-manipulando-data-no-sql-server-conteudo-alterado/
Com duas datas é tranquilo, mais tenho que fazer impressão de um mês
Extraia a hora e teste apenas com ela.
ou
Faça uma FUNCTION que retorne o turno.
/applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/mellow.gif&key=356581a1bd5b39ccefe91ac9b9df56effa5e2b9f2417c09b2bf6bec26392e3d6" alt="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
Bom dia
Funcionou, muito obrigado, desculpa pela demora.
Supondo somente a hora - 3º Turno
where ((hora between 2200 and 2359) or
(hora between 0000 and 0559))