Fórum Calculando Datas no SQL #530345
01/09/2015
0
Tenh um banco Firebird e utilizo um software onde consigo manipular as consulta via sql ao banco de dados e preciso de ajuda na seguinte questão:
Tenho duas tabelas, "ORDSERV" E "ORDXFUN" e duas colunas de datas "ORDSERV.DATPRO" E "ORDXFUN.DATHORINI". A coluna ORDSERV.DATPRO, possui um uma única data, porém, pode ser edita caso seja necessário, e a coluna ORDXFUN.DATHORINI possui várias datas, sendo assim, preciso retornar diferença entre ORDSERV.DATPRO e o primeiro registro da ORDXFUN.DATHORINI e o resultado deverá mostrar as horas e os minutos entre as datas.
João Cristo
Curtir tópico
+ 0Posts
01/09/2015
Fabio Basso
select datediff ( day, ORDSERV.DATPRO, ORDXFUN.DATHORINI)
Para pegar o primeiro registro da ORDXFUN.DATHORINI acho que vc consegue resolver com um select max
Gostei + 0
01/09/2015
João Cristo
Tentei algo como:
DATEDIFF(HOUR, ORDSERV.DATPRO, MIN (ORDXFUN.DATHORINI))
porém, só consegui o retorno em horas e preciso dos minutos, pois entre as dadas podem ter ambas situações.
Gostei + 0
01/09/2015
Fabio Basso
Gostei + 0
01/09/2015
João Cristo
Gostei + 0
01/09/2015
Fabio Basso
O bloco || ' - ' || faz a concatenção do resultado, então vc pode substituir o ' - ' por ':'
O operador || concatena colunas. Você pode testar isso com outros campos, por exemplo: select codigo_cli || ', ' || nome_cli from tb_cliente;
A função mod(x, y) retorna o resto da divisão de x por y.
Att.
Gostei + 0
01/09/2015
João Cristo
Gostei + 0
01/09/2015
Fabio Basso
Gostei + 0
01/09/2015
João Cristo
Gostei + 0
01/09/2015
Fabio Basso
http://pt.stackoverflow.com/questions/3455/formatar-casas-decimais-diretamente-no-comando-sql-em-firebird
Gostei + 0
01/09/2015
João Cristo
CAST(REPLACE(datediff(hour, ORDSERV.DATPRO, ORDXFUN.DATHORINI) || ':' ||mod(datediff (minute, ORDSERV.DATPRO, ORDXFUN.DATHORINI), 60)) as tempototal
Outra situação foi que no resultado não apresentou apenas o primeiro registro da ORDXFUN:
[img]http://arquivo.devmedia.com.br/forum/imagem/451341-20150901-160604.jpg[/img]
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)