Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida sobre Convert e Funções

Professor, boa tarde

Poderia me tirar uma dúvida, na verdade mais uma curiosidade se é possivel realizar no SQL. Segue a dúvida:

Digamos que eu queira calcular quanto tempo os caminhões da minha empresa de suco de fruta, estão demorando para realizar a primeira entrega, como ficaria isso no SQL? Eu tentei fazer da seguinte forma:

Create table TEMPO_ENTREGA ([ DATA] DATE, [HORA_PRIMEIRA_ENTREGA] TIME, [INICIO_JORNADA_TRABALHO] TIME, [TEMPO_DESLOCAMENTO] TIME)

INSERT INTO TEMPO_ENTREGA ([DATA], [INICIO_JORNADA_TRABALHO], [HORA_PRIMEIRA_ENTREGA]) VALUES ('2020-03-26', '08:00', '08:30')

UPDATE: TEMPO_ENTREGA SET TEMPO_DESLOCAMENTO = (SELECT HORA_PRIMEIRA_ENTREGA - INICIO_JORNADA_TRABALHO from TEMPO_ENTREGA WHERE DATA = '2020-03-26') WHERE DATA = '2020-03-26'

Porém o SQL gera a mensagem "Operand data type time is invalid for add operator." É só uma curiosidade minha, mais você poderia me ajudar? Caso, não seja possivel tudo bem, era só uma curiosidade mesmo

2 respostas
solução!

Olá Abimael, tudo bem? Bom, pelo que entendi você tem uma tabela que armazena o inicio do trabalho, e também a hora que foi feita a primeira entrega, e outra tabela que armazena o tempo de deslocamento é isso? Bem, sobre o erro, realmente não podemos fazer operações matemáticas sobre campos de data ou hora, então para realizar essa operação precisamos utilizar funções especificas para isso, nesse caso, você poderia utilizar a função DATEDIFF do SQL Server, que retorna a diferença entre datas, mas também podemos utilizar para calcular a diferença de horas:

DATEDIFF (hh, INICIO_JORNADA_TRABALHO , HORA_PRIMEIRA_ENTREGA)

Onde o hh significa que você quer a diferença de horas entre os dois parametros informados.

Você pode ler mais sobre o DATEDIFF na documentação do SQL Server.

Espero ter esclarecido sua dúvida!

Entendido, usei esse datediff e deu certo. Obrigado Mestre!