Array
(
)

Calcular DATETIME

Elton Ésqui
   - 27 ago 2010

Amigos

Tenho o seguinte select:

#Código

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 #Código
SUM(FIM_PAUSA - INI_PAUSA) AS TOTAL_PAUSA
, mas não exibe o resultado em HH:MM:SS.
O banco é INTERBASE.

Obrigado!

Eriley Barbosa
   - 27 ago 2010

Já tentou sem o sum  #Código

SELECT 
  OPERADOR,
  DATA,
  SEQUENCIA,
  NUMERO,
  MOTIVO,
  INI_PAUSA,
  FIM_PAUSA,
  CAST((FIM_PAUSA - INI_PAUSA) AS TIME) TOTAL_PAUSA
FROM
  OPEPAUSA

0
|
0

Elton Ésqui
   - 27 ago 2010

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

Aí se eu coloco #Código

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á!!!

0
|
0

Eriley Barbosa
   - 27 ago 2010

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

0
|
0

Elton Ésqui
   - 27 ago 2010

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.

0
|
0

Eriley Barbosa
   - 27 ago 2010

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

0
|
0

Elton Ésqui
   - 27 ago 2010

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

0
|
0

Eriley Barbosa
   - 27 ago 2010

Coloque o sql completo aqui.

0
|
0

Elton Ésqui
   - 27 ago 2010

Voi lá...

#Código

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

0
|
0

Eriley Barbosa
   - 27 ago 2010

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

0
|
0