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

05/10/2015

0

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é

André

Responder

Posts

07/10/2015

Gisely Santos

veja:
Responder

07/10/2015

Gisely Santos

[img:descricao=esqueci de mandar a imagen kkkk]http://arquivo.devmedia.com.br/forum/imagem/439048-20151007-093654.jpg[/img]
Responder

07/10/2015

Gisely Santos

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

07/10/2015

André

Veja:
[img]http://arquivo.devmedia.com.br/forum/imagem/457143-20151007-095451.jpg[/img]
Responder

07/10/2015

Gisely Santos

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?
Responder

07/10/2015

André

Sim, continua dando erro..
Você não alguma outra forma de fazer sem usar o DATEDIFF não ?
Responder

07/10/2015

Gisely Santos

pra calcular a diferença entre datas não sei. Mas o fato é que o problema não é a função, mas a forma como você esta fazendo.
Você quer calcular a diferença de dias de uma data do seu banco de dados? Esse DUAL seria sua tabela? Qual o nome do campo que esta com a data?
Responder

07/10/2015

Marcos P

André,

O link que passei é a documentação oficial do MySql... não existe erro algum nos exemplos !

Se quiser confirmar, veja o exemplo que preparei em Fiddle
Responder

07/10/2015

André

Eu preciso que ele me informe quantos dias tem em um determinado período de data.
Dual substitui uma tabela qualquer do sistema.
Se eu quiser pegar uma data qualquer do sistema usando from dual da certo.
Responder

07/10/2015

Marcos P

Você testou os exemplos que preparei ?

Percebeu que :

SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
2007-12-31 23:59:59 - 2007-12-30 = 1 ( dia )

SELECT DATEDIFF('2010-11-30 23:59:59','2010-12-31')
2010-11-30 23:59:59 - 2010-12-31 = -31 ( dias )

Qual parte disso, você não entendeu ?
Responder

07/10/2015

André

Marcos, eu entendi a sua expressão.
O problema é quando eu jogo la no Oracle Sql Developer ele da erro ..
Dá identificador invalido no DATEDIFF
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar