Jump to content
Fórum Script Brasil
  • 0

Problemas com DATEDIFF


Tonblz

Question

Boa noite galera,

estou com problemas para usar o DATEDIFF(MINUTE), pois tenho que dividir o dia em 3 turnos

1º Turno > 6:00 às 13:59

2º Turno > 14:00 às 21:59

3º Turno > 22:00 às 23:59 + 0:00 às 05:59 (outro dia)

ABAIXO A CONSULTA

SELECT DATEDIFF(MINUTE,DT_INICIO,DT_FIM) AS T1

FROM PARADA WHERE IDPARADA = 64436

Data_Inicio

2011-01-11 08:52:54.887

Data Final

2011-01-11 15:04:03.923

T1 = 372

PORÉM O RESULTADO CERTO É 307 (POIS O HORÁRIO FINAL PASSOU DAS 13:59, FINAL DO PRIMEIRO TURNO

MAS EU NÃO POSSO COLOCAR DATEDIFF(MINUTE,DT_INICIO,'2011-01-11 13:59:59') , POIS O '2011-01-11' NÃO PODE SER FIXO, APENAS O HORÁRIO, COLOCO DEIXAR ESSE CONSULTA FLEXIVEL DE ACORDO COM A MINHA NECESSIDADE ?

Desde já agradeço pela atenção

abraços,

Ton

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Bom dia Ton,

Não entendi porque o resultado certo é 307. Mesmo o horário passando do 1º turno, os minutos teriam que ser 372...

Para colocar a consulta flexível, terá que criar uma variável e concatenar a data e hora que necessita.

Link to comment
Share on other sites

  • 0

Bom dia Fulvio,

o resultado de 307,5 min é referente ao intervalo de parada (somente do primeiro turno), pois o primeiro turno vai até às 13.59, passando isso não posso considerar mais os min

372 é total da parada, mais no primeiro turno terminando às 13:59 teoricamente o tempo de parada ficaria assim

t1 307

t2 64,3

t3 0

total = 372

a pergunta é como usar o horá com fixa mais a data não

DATEDIFF(MINUTE,DT_INICIO,'data não pode ser fixa é o campo DT_FIM ' 13:59:59')

abraços,

Ton

Link to comment
Share on other sites

  • 0

Bom dia Ton,

Ok, entendido. Poderá utilizar uma variável para a data e utilizar o case para calcular os minutos por turno. Segue um exemplo:

DECLARE @Data AS DATETIME
SET @Data = '2011-01-11' 

SELECT CASE when (@Data + '08:52:54.887') BETWEEN (@Data + '6:00') AND (@Data + '13:59') 
THEN DATEDIFF(MINUTE, @Data + '08:52:54.887', @Data + '13:59') end

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652.1k
×
×
  • Create New...