CALCULO DE DATAS NO FIREBIRD
Bom dia,
Poderiam continuar me ajudando na questão, tentei este comando, porém, não consegui, retornar o ''TEMPOTOTAL" arredondado e nem retornar apenas o primeiro registro da "ORDXFUN.DATHORINI".
CAST(REPLACE(datediff(hour, ORDSERV.DATPRO, ORDXFUN.DATHORINI) || ':' ||mod(datediff (minute, ORDSERV.DATPRO, ORDXFUN.DATHORINI), 60)) as tempototal
[img]http://arquivo.devmedia.com.br/forum/imagem/451341-20150901-160604.jpg[/img]
Poderiam continuar me ajudando na questão, tentei este comando, porém, não consegui, retornar o ''TEMPOTOTAL" arredondado e nem retornar apenas o primeiro registro da "ORDXFUN.DATHORINI".
CAST(REPLACE(datediff(hour, ORDSERV.DATPRO, ORDXFUN.DATHORINI) || ':' ||mod(datediff (minute, ORDSERV.DATPRO, ORDXFUN.DATHORINI), 60)) as tempototal
[img]http://arquivo.devmedia.com.br/forum/imagem/451341-20150901-160604.jpg[/img]
João Cristo
Curtidas 0
Respostas
Fabio Basso
02/09/2015
Você pode mandar o DML das tabelas ORDSERV e ORDXFUN?
GOSTEI 0
João Cristo
02/09/2015
Somente na parte que descrevi primeiro estou tendo problemas, no restante consegui os resultados esperados, os campos de DATAS em ambas as tabelas são TIMESTAMP e não sei como formatar para arredondar os horários.
SELECT
FILIAL.TAG, FILIAL.RAZSOC AS FIL,
ORDSERV.TAG AS TAG_ORDSERV, ORDSERV.DATPRO2,
APLIC.TAG, APLIC.DESCRICAO AS APLIC,
ORDSERV.DATPRO, MIN(ORDXFUN.DATHORINI) AS INICIO, MAX(ORDXFUN.DATHORFIM) AS FIM,
datediff(hour, ORDSERV.DATPRO, ORDXFUN.DATHORINI) || ':' ||mod(datediff (minute, ORDSERV.DATPRO, ORDXFUN.DATHORINI), 60) as tempototal,
(ORDXFUN.DATHORFIM-ORDXFUN.DATHORINI)*24 H_TRAB
FROM ORDSERV
INNER JOIN TIPMANUT ON TIPMANUT.CODTIPMAN=ORDSERV.CODTIPMAN AND TIPMANUT.CODEMP=ORDSERV.CODEMP_2
INNER JOIN CENCUS ON ORDSERV.CODCEN=CENCUS.CODCEN AND ORDSERV.CODEMP_3=CENCUS.CODEMP
INNER JOIN SETEXE ON SETEXE.CODSET=ORDSERV.CODSET AND SETEXE.CODEMP=ORDSERV.CODEMP_4
LEFT OUTER JOIN APLIC ON APLIC.CODAPL=ORDSERV.CODAPL
LEFT OUTER JOIN FUNC ON ORDSERV.CODFUN=FUNC.CODFUN
LEFT OUTER JOIN CLIENTE ON CLIENTE.CODCLI=ORDSERV.CODCLI
LEFT OUTER JOIN PLAMANUT ON ORDSERV.CODPLA=PLAMANUT.CODPLA AND ORDSERV.CODEMP_1=PLAMANUT.CODEMP
LEFT OUTER JOIN FILIAL ON FILIAL.CODFIL=ORDSERV.CODFIL AND FILIAL.CODEMP=ORDSERV.CODEMP_7
LEFT OUTER JOIN CONTABIL ON CONTABIL.CODCON=ORDSERV.CODCON AND CONTABIL.CODEMP=ORDSERV.CODEMP_8
LEFT OUTER JOIN LOCAPLIC ON LOCAPLIC.CODLOCAPL=ORDSERV.CODLOCAPL AND LOCAPLIC.CODEMP=ORDSERV.CODEMP
inner join ORDXFUN on ORDXFUN.CODEMP=ORDSERV.CODEMP AND ORDXFUN.CODORD=ORDSERV.CODORD
WHERE
ORDSERV.STATORD='F'
AND ORDSERV.CODEMP=:CODEMP
AND 0=0
GROUP BY FILIAL.TAG, FILIAL.RAZSOC, ORDSERV.TAG, ORDSERV.DATPRO2, APLIC.TAG, APLIC.DESCRICAO, ORDXFUN.DATHORINI, ORDSERV.DATPRO, ORDXFUN.DATHORFIM
ORDER BY 1
SELECT
FILIAL.TAG, FILIAL.RAZSOC AS FIL,
ORDSERV.TAG AS TAG_ORDSERV, ORDSERV.DATPRO2,
APLIC.TAG, APLIC.DESCRICAO AS APLIC,
ORDSERV.DATPRO, MIN(ORDXFUN.DATHORINI) AS INICIO, MAX(ORDXFUN.DATHORFIM) AS FIM,
datediff(hour, ORDSERV.DATPRO, ORDXFUN.DATHORINI) || ':' ||mod(datediff (minute, ORDSERV.DATPRO, ORDXFUN.DATHORINI), 60) as tempototal,
(ORDXFUN.DATHORFIM-ORDXFUN.DATHORINI)*24 H_TRAB
FROM ORDSERV
INNER JOIN TIPMANUT ON TIPMANUT.CODTIPMAN=ORDSERV.CODTIPMAN AND TIPMANUT.CODEMP=ORDSERV.CODEMP_2
INNER JOIN CENCUS ON ORDSERV.CODCEN=CENCUS.CODCEN AND ORDSERV.CODEMP_3=CENCUS.CODEMP
INNER JOIN SETEXE ON SETEXE.CODSET=ORDSERV.CODSET AND SETEXE.CODEMP=ORDSERV.CODEMP_4
LEFT OUTER JOIN APLIC ON APLIC.CODAPL=ORDSERV.CODAPL
LEFT OUTER JOIN FUNC ON ORDSERV.CODFUN=FUNC.CODFUN
LEFT OUTER JOIN CLIENTE ON CLIENTE.CODCLI=ORDSERV.CODCLI
LEFT OUTER JOIN PLAMANUT ON ORDSERV.CODPLA=PLAMANUT.CODPLA AND ORDSERV.CODEMP_1=PLAMANUT.CODEMP
LEFT OUTER JOIN FILIAL ON FILIAL.CODFIL=ORDSERV.CODFIL AND FILIAL.CODEMP=ORDSERV.CODEMP_7
LEFT OUTER JOIN CONTABIL ON CONTABIL.CODCON=ORDSERV.CODCON AND CONTABIL.CODEMP=ORDSERV.CODEMP_8
LEFT OUTER JOIN LOCAPLIC ON LOCAPLIC.CODLOCAPL=ORDSERV.CODLOCAPL AND LOCAPLIC.CODEMP=ORDSERV.CODEMP
inner join ORDXFUN on ORDXFUN.CODEMP=ORDSERV.CODEMP AND ORDXFUN.CODORD=ORDSERV.CODORD
WHERE
ORDSERV.STATORD='F'
AND ORDSERV.CODEMP=:CODEMP
AND 0=0
GROUP BY FILIAL.TAG, FILIAL.RAZSOC, ORDSERV.TAG, ORDSERV.DATPRO2, APLIC.TAG, APLIC.DESCRICAO, ORDXFUN.DATHORINI, ORDSERV.DATPRO, ORDXFUN.DATHORFIM
ORDER BY 1
GOSTEI 0
João Cristo
02/09/2015
Lembrando que executo a consulta através de um software e não direto no Banco Firebird.
GOSTEI 0