Jump to content
Fórum Script Brasil
  • 0

ERRO ORA-00904: "DATEDIFF": identificador inválido


André Sena
 Share

Question

Estou tentando calcular o numero de dias que existe entre duas datas
Ex: 01/01/2014 ate 31/12/2014 são 365 dias.
Fiz uma pesquisa e vi que se eu o DATEDIFF, mais quando eu tento rodar a seguinte query dá o seguinte erro:

SELECT DATEDIFF('31/12/2014', '01/01/2014')
FROM DUAL

ERRO: ORA-00904: "DATEDIFF": identificador inválido

Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0

ORA-00904 string: identificador inválido

     Causa: O nome da coluna está ausente ou inválido.
 
     Ação: Digite um nome de coluna válido. Um nome de coluna válido deve começar com uma letra, seja inferior ou igual a 30 caracteres, e consistem em apenas caracteres alfanuméricos e os caracteres especiais $, _, e #.

     Se ele contém outros caracteres, então ele deve ser colocado entre aspas duplas. Pode não ser uma palavra reservada.

Para evitar ORA-00904, nomes de coluna não podem ser uma palavra reservada, e deve conter estes quatro critérios para ser válido:

     começar com uma letra
     ser inferior ou igual a trinta caracteres
     consistir apenas em caracteres alfanuméricos e os caracteres especiais ($ _ #); outros caracteres precisam de aspas duplas ao redor deles

Outro fator importante na correção ORA-00904 é lembrar de executar catproc.sql

Você também pode verificar o seu arquivo de rastreamento para localizar o erro específico que está causando o erro ORA-00904

 

Example

The following SELECT statement:

SELECT DATEDIFF('2014-11-30','2014-11-29') AS DiffDate

will result in this:

DiffDate
1

Example

The following SELECT statement:

SELECT DATEDIFF('2014-11-29','2014-11-30') AS DiffDate

will result in this:

DiffDate

-1

OBS: Verifique o formato da data no Oracle

abraço

Edited by Jhonas
Link to comment
Share on other sites

  • 0

Jhonas,

O formato de data que eu uso é 'dd/mm/aaaa'..

Fiz de acordo com seus exemplos e continuou dando erro.

SELECT DATEDIFF('01/01/2014','31-12-2014') AS DiffDate
FROM DUAL
ERRO: ORA-00904: "DATEDIFF": identificador inválido

Será que o problema pode ser em  executar o catproc.sql ? Se for como eu executo esse arquivo ?

Link to comment
Share on other sites

  • 0

é um banco de dados a oracle (SQL) .. Uso a ferrando Oracle Sql developer

 

Pois é.Este é um fórum de MySQL.o uso da função DATEDIFF é diferente.

Estou movendo este tópico para  o  fórum "Demais bancos".

Link to comment
Share on other sites

  • 0

Boa dia pessoal, posso aproveitar este poste para uma perguntinha rápida?

Vejam se é possível fazer algo parecido com isto:

select  1 as t1, 2 as t2,  (t1+ t2)  from dual 

Tenho a coluna 1 e 2, a terceira coluna gostaria da soma das duas.
Outro exemplo:

select  (10 + 2) as valor1, (valor1 + 13) as valor2  from dual 

Tem como fazer estes dois SQL?

Link to comment
Share on other sites

  • 0

Jhonas, 

A função DATEDIFF ela é invalida no oracle
a forma de você obter o espaço de tempo do seu exemplo
como você postou e segue a baixo...

-- FORMA ERRADA
SELECT DATEDIFF('01/01/2014','31-12-2014') AS DiffDate
FROM DUAL;

seria assim:
-- FORMA CORRETA
SELECT TO_DATE('01/01/2014','dd/mm/yyyy')-
       TO_DATE('31/12/2014','dd/mm/yyyy') 
       AS DIFF_DATE, 
FROM DUAL;

Espero ter ajudado!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      149.9k
    • Total Posts
      646.8k
×
×
  • Create New...