Ir para conteúdo
Fórum Script Brasil
  • 0

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


André Sena

Pergunta

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 para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 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

Editado por Jhonas
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...