Calcular DATETIME

27/08/2010

Amigos

Tenho o seguinte select:

SELECT 
  OPERADOR,
  DATA,
  SEQUENCIA,
  NUMERO,
  MOTIVO,
  INI_PAUSA,
  FIM_PAUSA
FROM
  OPEPAUSA


Como faço pra calcular a diferença entre os campos   INI_PAUSA e FIM_PAUSA?

Num raciocínio primário eu fiz
SUM(FIM_PAUSA - INI_PAUSA) AS TOTAL_PAUSA
, mas não exibe o resultado em HH:MM:SS.
O banco é INTERBASE.

Obrigado!

Elton Ésqui

Respostas

27/08/2010

Eriley Barbosa

Já tentou sem o sum  
SELECT 
  OPERADOR,
  DATA,
  SEQUENCIA,
  NUMERO,
  MOTIVO,
  INI_PAUSA,
  FIM_PAUSA,
  CAST((FIM_PAUSA - INI_PAUSA) AS TIME) TOTAL_PAUSA
FROM
  OPEPAUSA

Responder Citar

27/08/2010

Elton Ésqui

Gerou erro: SQL Server Error: ORA-00932: tipos de dados inconsistentes: esperava TIME obteve DATE JULIAN

Aí se eu coloco
CAST((FIM_PAUSA - INI_PAUSA) AS DATE JULIAN) AS TOTAL_PAUSA
gera o erro:
SQL Server Error: ORA-00907: parêntese direito não encontrado.

Mas os (()) estão todos lá!!!
Responder Citar

27/08/2010

Eriley Barbosa

Os dois campos são time, tente assim: (FIM_PAUSA - INI_PAUSA) TOTAL_PAUSA e veja o que retorna   ou utiliza o convert, gostaria que passa-se os tipos de campo de FIM_PAUSA e INI_PAUSA   CONVERT (time, (FIM_PAUSA - INI_PAUSA)) TOTAL_PAUSA
Responder Citar

27/08/2010

Elton Ésqui

O primeiro retorna 0.0417824074074074
O campo é DATETIME

Convert não funcionou :(

Pelo que pesquisei a leitura é: DD/MM/YYYY, HH:MM:SS
Com isso é possível calcular quando virar o dia e trazer o tempo certo.
Responder Citar

27/08/2010

Eriley Barbosa

CONVERT (time, FIM_PAUSA) - CONVERT (time, INI_PAUSA) TOTAL_PAUSA ou CONVERT (time, FIM_PAUSA, 8) - CONVERT (time, INI_PAUSA, 8) TOTAL_PAUSA
Responder Citar

27/08/2010

Elton Ésqui

Retornou um errinho
Mensagem: SQL Server Error: Token unknown - line 9, char 13 ,.
Responder Citar

27/08/2010

Eriley Barbosa

Coloque o sql completo aqui.
Responder Citar

27/08/2010

Elton Ésqui

Voi lá...

SELECT 
  OPEPAUSA.OPERADOR,
  OPEPAUSA.DATA,
  OPEPAUSA.SEQUENCIA,
  OPEPAUSA.NUMERO,
  OPEPAUSA.MOTIVO,
  OPEPAUSA.INI_PAUSA,
  OPEPAUSA.FIM_PAUSA,
  CONVERT(time, FIM_PAUSA) - CONVERT(time, INI_PAUSA) AS TOTAL_PAUSA
FROM
  OPEPAUSA

Responder Citar

27/08/2010

Eriley Barbosa

SELECT
  OPEPAUSA.OPERADOR,
  OPEPAUSA.DATA,
  OPEPAUSA.SEQUENCIA,
  OPEPAUSA.NUMERO,
  OPEPAUSA.MOTIVO,
  OPEPAUSA.INI_PAUSA,
  OPEPAUSA.FIM_PAUSA,
  (CONVERT(time, OPEPAUSA.FIM_PAUSA) - CONVERT(time, OPEPAUSA.INI_PAUSA)) AS TOTAL_PAUSA
FROM
  OPEPAUSA ou assim SELECT
  OPEPAUSA.OPERADOR,
  OPEPAUSA.DATA,
  OPEPAUSA.SEQUENCIA,
  OPEPAUSA.NUMERO,
  OPEPAUSA.MOTIVO,
  OPEPAUSA.INI_PAUSA,
  OPEPAUSA.FIM_PAUSA,
  (CONVERT(time, OPEPAUSA.FIM_PAUSA, 8) - CONVERT(time, OPEPAUSA.INI_PAUSA, 8)) AS TOTAL_PAUSA
FROM
  OPEPAUSA
Responder Citar