Array
(
)

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

André
   - 05 out 2015

Estou tentando fazer uma query que conte quantos dias há em um determinado período de datas.
Ex: De 01/01/2015 a 31/12/2015 tem 365 dias
SELECT DATEDIFF('31/12/2015', '01/01/2015')
FROM DUAL
ERRO: ORA-00904: "DATEDIFF": identificador inválido

André
   - 05 out 2015

É SQL

Marcos P
   - 05 out 2015

Sql server com prefixo "ORA" no erro ?

Estranho !

https://msdn.microsoft.com/pt-br/library/ms189794%28v=sql.120%29.aspx

Marcos P
   - 05 out 2015

Resolveu ?

Marcos P
   - 06 out 2015

André, você conseguiu resolver seu problema ?

Precisa de mais alguma ajuda adicional ?

André
   - 06 out 2015

Preciso de mais ajuda.

Não consegui com nenhuma dos dois exemplos ele fica dando o mesmo erro

Marcos P
   - 06 out 2015

Qual seu banco de dados ?

Sql Server ? Oracle ? MySql ? Firebird ?

Gisely :d
   - 06 out 2015

Ola Marcos.

Penso que seja o formato de sua data (01/01/2015) tente 2015-01-01. Pelo menos no meu funcionou....

Marcos P
   - 06 out 2015

Sim o funcionamento é trivial, ainda mais com os exemplos que passei nos links acima.

Agora, sem a definição de qual banco de dados está sendo usado, fica difícil ajudar...

Gisely :d
   - 06 out 2015

Pelo erro do código, eu consegui identificar que se trata de um bd da oracle (MySQL). É o mesmo que eu utilizo... a função DATEDIFF não funciona por conta do formato da data.

Marcos P
   - 06 out 2015

Se for MySql, segue o link da documentação dessa função : https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_datediff

Com exemplos...

André
   - 07 out 2015

- O meu banco é esse que o gisahchan disse oracle (MySQL)

- O Formato da data que eu uso aqui é 'dd/mm/aa'

- Usei pelo seu exemplo de MySql marcos e mesmo assim continua dando o mesmo erro

SELECT DATEDIFF ('01/01/2014 23:59:59', '31-12-2014')
FROM DUAL

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

André
   - 07 out 2015


Citação:
- O meu banco é esse que o gisahchan disse oracle (MySQL)

- O Formato da data que eu uso aqui é 'dd/mm/aaaa'

- Usei pelo seu exemplo de MySql marcos e mesmo assim continua dando o mesmo erro

SELECT DATEDIFF ('01/01/2014 23:59:59', '31-12-2014')
FROM DUAL

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

Gisely :d
   - 07 out 2015

Bom dia Andre.
As duas datas que você vai utilizar têm de estar no mesmo formato (aaaa-mm-dd).

André
   - 07 out 2015

Escrevi errado aqui kkkk, tentei com o mesmo formato e deu erro

Gisely :d
   - 07 out 2015

veja:

Gisely :d
   - 07 out 2015

esqueci de mandar a imagen kkkk (Clique na imagem para abrir em uma nova janela)

Gisely :d
   - 07 out 2015

e esse DUAL seria sua tabela? que formato de data esta dentro dele? é char? date? datetime?

André
   - 07 out 2015

Veja:
Clique na imagem para abrir em uma nova janela

Gisely :d
   - 07 out 2015

Ok. Agora percebi. Se você for pegar um campo que contenha a data dentro de sua tabela você precisa fazer:

SELECT DATEDIFF(campo,'2014-12-31') , lembrado que o seu campo 'campo' tem de estar no formato Y-m-d, caso contrario vai dar erro.
O que você esta fazendo é tentando extrair a diferença de dois campos com formato errado, e além disso um deles possui também o horário... dessa forma não vai dar certo mesmo.
Você testou o que te falei no post acima? as duas datas apenas ( sem o horário) no formato ano-mes-dia?